]> Savannah Git Hosting - gnulib.git/commitdiff
cond, lock, thread: better 'inline'
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 21 Nov 2012 06:25:08 +0000 (22:25 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 30 Nov 2012 07:38:54 +0000 (23:38 -0800)
* lib/glthread/cond.c, lib/glthread/cond.h (_GLTHREAD_COND_INLINE):
* lib/glthread/thread.c, lib/glthread/thread.h (_GLTHREAD_THREAD_INLINE):
New macros.  Use them instead of static inline, for header functions.
* lib/glthread/cond.c (gl_waitqueue_init, gl_waitqueue_remove)
(gl_waitqueue_notify_first, gl_waitqueue_notify_all):
* lib/glthread/lock.c (gl_waitqueue_init)
(gl_waitqueue_notify_first, gl_waitqueue_notify_all):
* lib/glthread/thread.c (get_current_thread_handle):
Change 'static inline' to 'inline'.
* lib/glthread/cond.h, lib/glthread/thread.h:
Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END.
* m4/cond.m4 (gl_COND):
* m4/lock.m4 (gl_PREREQ_LOCK):
* m4/thread.m4 (gl_THREAD):
Do not require AC_C_INLINE.
* modules/cond, modules/thread (Depends-on): Add extern-inline.

ChangeLog
lib/glthread/cond.c
lib/glthread/cond.h
lib/glthread/lock.c
lib/glthread/thread.c
lib/glthread/thread.h
m4/cond.m4
m4/lock.m4
m4/thread.m4
modules/cond
modules/thread

index d83bf002917b641b1101aaa62114ce5bf005d017..8418c3b49f443d69e1b0e94d2608918138033294 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,23 @@
 2012-11-29  Paul Eggert  <eggert@cs.ucla.edu>
 
+       cond, lock, thread: better 'inline'
+       * lib/glthread/cond.c, lib/glthread/cond.h (_GLTHREAD_COND_INLINE):
+       * lib/glthread/thread.c, lib/glthread/thread.h (_GLTHREAD_THREAD_INLINE):
+       New macros.  Use them instead of static inline, for header functions.
+       * lib/glthread/cond.c (gl_waitqueue_init, gl_waitqueue_remove)
+       (gl_waitqueue_notify_first, gl_waitqueue_notify_all):
+       * lib/glthread/lock.c (gl_waitqueue_init)
+       (gl_waitqueue_notify_first, gl_waitqueue_notify_all):
+       * lib/glthread/thread.c (get_current_thread_handle):
+       Change 'static inline' to 'inline'.
+       * lib/glthread/cond.h, lib/glthread/thread.h:
+       Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END.
+       * m4/cond.m4 (gl_COND):
+       * m4/lock.m4 (gl_PREREQ_LOCK):
+       * m4/thread.m4 (gl_THREAD):
+       Do not require AC_C_INLINE.
+       * modules/cond, modules/thread (Depends-on): Add extern-inline.
+
        chdir-long, cycle-check, savewd: better 'inline'
        * lib/chdir-long.c (cdb_init, cdb_fchdir, cdb_free)
        (find_non_slash):
index ef69d14cc513cef72fb999c7da5dc41d52292a57..cdf4c5b37425c88616c2c37c99d0c5cf6cc21836 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <config.h>
 
+#define _GLTHREAD_COND_INLINE _GL_EXTERN_INLINE
 #include "glthread/cond.h"
 
 /* ========================================================================= */
@@ -90,7 +91,7 @@ struct gl_waitqueue_element
                    This field is immutable once initialized. */
 };
 
-static inline void
+static void
 gl_waitqueue_init (gl_waitqueue_t *wq)
 {
   wq->wq_list.wql_next = &wq->wq_list;
@@ -134,7 +135,7 @@ gl_waitqueue_add (gl_waitqueue_t *wq)
 /* Removes the current thread, represented by a 'struct gl_waitqueue_element *',
    from a wait queue.
    Returns true if is was found and removed, false if it was not present.  */
-static inline bool
+static bool
 gl_waitqueue_remove (gl_waitqueue_t *wq, struct gl_waitqueue_element *elt)
 {
   if (elt->link.wql_next != NULL && elt->link.wql_prev != NULL)
@@ -153,7 +154,7 @@ gl_waitqueue_remove (gl_waitqueue_t *wq, struct gl_waitqueue_element *elt)
 }
 
 /* Notifies the first thread from a wait queue and dequeues it.  */
-static inline void
+static void
 gl_waitqueue_notify_first (gl_waitqueue_t *wq)
 {
   if (wq->wq_list.wql_next != &wq->wq_list)
@@ -178,7 +179,7 @@ gl_waitqueue_notify_first (gl_waitqueue_t *wq)
 }
 
 /* Notifies all threads from a wait queue and dequeues them all.  */
-static inline void
+static void
 gl_waitqueue_notify_all (gl_waitqueue_t *wq)
 {
   struct gl_waitqueue_link *l;
index db8f2d16ce7e2509177a7c1e89c87958ab64d6ad..39a9ae75a4937774c8947183365debb988107d55 100644 (file)
 
 #include "glthread/lock.h"
 
+_GL_INLINE_HEADER_BEGIN
+#ifndef _GLTHREAD_COND_INLINE
+# define _GLTHREAD_COND_INLINE _GL_INLINE
+#endif
+
 /* ========================================================================= */
 
 #if USE_POSIX_THREADS
@@ -369,7 +374,7 @@ extern "C" {
    while (0)
 #define gl_cond_timedwait(COND, LOCK, ABSTIME) \
   gl_cond_timedwait_func (&COND, &LOCK, ABSTIME)
-static inline bool
+_GLTHREAD_COND_INLINE bool
 gl_cond_timedwait_func (gl_cond_t *cond, gl_lock_t *lock, struct timespec *abstime)
 {
   int err = glthread_cond_timedwait (cond, lock, abstime);
@@ -405,4 +410,6 @@ gl_cond_timedwait_func (gl_cond_t *cond, gl_lock_t *lock, struct timespec *absti
 }
 #endif
 
+_GL_INLINE_HEADER_END
+
 #endif /* _GLTHREAD_COND_H */
index a03dc3d624ef40dc221fdd1c8839b7012325aa8c..d5d060a39a28114abd754c3742d98d67d4c5e21f 100644 (file)
@@ -682,7 +682,7 @@ glthread_lock_destroy_func (gl_lock_t *lock)
 /* In this file, the waitqueues are implemented as circular arrays.  */
 #define gl_waitqueue_t gl_carray_waitqueue_t
 
-static inline void
+static void
 gl_waitqueue_init (gl_waitqueue_t *wq)
 {
   wq->array = NULL;
@@ -743,7 +743,7 @@ gl_waitqueue_add (gl_waitqueue_t *wq)
 }
 
 /* Notifies the first thread from a wait queue and dequeues it.  */
-static inline void
+static void
 gl_waitqueue_notify_first (gl_waitqueue_t *wq)
 {
   SetEvent (wq->array[wq->offset + 0]);
@@ -754,7 +754,7 @@ gl_waitqueue_notify_first (gl_waitqueue_t *wq)
 }
 
 /* Notifies all threads from a wait queue and dequeues them all.  */
-static inline void
+static void
 gl_waitqueue_notify_all (gl_waitqueue_t *wq)
 {
   unsigned int i;
index 76e37646e79b7801fdd0798d6ca2aa86ba7cc147..25b758a86a1153ac1118283949afcd757b8820aa 100644 (file)
@@ -21,6 +21,7 @@
 #include <config.h>
 
 /* Specification.  */
+# define _GLTHREAD_THREAD_INLINE _GL_EXTERN_INLINE
 #include "glthread/thread.h"
 
 #include <stdlib.h>
@@ -85,7 +86,7 @@ struct gl_thread_struct
 };
 
 /* Return a real HANDLE object for the current thread.  */
-static inline HANDLE
+static HANDLE
 get_current_thread_handle (void)
 {
   HANDLE this_handle;
index 87e87006b82f44e2561979053e706557953f98ae..c5bc0ae2e6d38ef6c6e14c41ad0db879feb030be 100644 (file)
 #include <errno.h>
 #include <stdlib.h>
 
+_GL_INLINE_HEADER_BEGIN
+#ifndef _GLTHREAD_THREAD_INLINE
+# define _GLTHREAD_THREAD_INLINE _GL_INLINE
+#endif
+
 /* ========================================================================= */
 
 #if USE_POSIX_THREADS
@@ -360,7 +365,7 @@ typedef int gl_thread_t;
 extern "C" {
 #endif
 
-static inline gl_thread_t
+_GLTHREAD_THREAD_INLINE gl_thread_t
 gl_thread_create (void *(*func) (void *arg), void *arg)
 {
   gl_thread_t thread;
@@ -397,4 +402,6 @@ gl_thread_create (void *(*func) (void *arg), void *arg)
 }
 #endif
 
+_GL_INLINE_HEADER_END
+
 #endif /* _GLTHREAD_THREAD_H */
index 8010d6c6c58761ec8ab222af819b98c91203aa0f..b89d210b3c0198286fd7a0eb1dcfe3bc3d33e3d0 100644 (file)
@@ -1,4 +1,4 @@
-# cond.m4 serial 1
+# cond.m4 serial 2
 dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -7,5 +7,4 @@ dnl with or without modifications, as long as this notice is preserved.
 AC_DEFUN([gl_COND],
 [
   AC_REQUIRE([gl_THREADLIB])
-  AC_REQUIRE([AC_C_INLINE])
 ])
index 19c6d459f1b8129763c2bd52d1a7898e1916f73f..83da6ccf6202e7356b775749b6f1740b88869887 100644 (file)
@@ -1,4 +1,4 @@
-# lock.m4 serial 12 (gettext-0.18.2)
+# lock.m4 serial 13 (gettext-0.18.2)
 dnl Copyright (C) 2005-2012 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -35,7 +35,5 @@ return !x;
   gl_PREREQ_LOCK
 ])
 
-# Prerequisites of lib/lock.c.
-AC_DEFUN([gl_PREREQ_LOCK], [
-  AC_REQUIRE([AC_C_INLINE])
-])
+# Prerequisites of lib/glthread/lock.c.
+AC_DEFUN([gl_PREREQ_LOCK], [:])
index cd66c3e9032825e7c56c54715b72c8ec1228647a..3c94d11d51db386d025b0545a66b5c9d8f147c05 100644 (file)
@@ -1,4 +1,4 @@
-# thread.m4 serial 2
+# thread.m4 serial 3
 dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -7,7 +7,6 @@ dnl with or without modifications, as long as this notice is preserved.
 AC_DEFUN([gl_THREAD],
 [
   AC_REQUIRE([gl_THREADLIB])
-  AC_REQUIRE([AC_C_INLINE])
 
   if test $gl_threads_api = posix; then
     gl_save_LIBS="$LIBS"
index a28ed116d3dbdbbc33ea0de83e96db0860845f2c..c3a2dab2549ea8e9cb866c1dca5a81906444e388 100644 (file)
@@ -10,6 +10,7 @@ Depends-on:
 threadlib
 lock
 errno
+extern-inline
 stdbool
 time
 gettimeofday
@@ -28,4 +29,3 @@ LGPLv2+
 
 Maintainer:
 Yoann Vandoorselaere
-
index a7d338df4cf320467a70a936756afb103fd96349..026e4392d9d3a15fcc3c2bae8a972123105eed80 100644 (file)
@@ -8,6 +8,7 @@ m4/thread.m4
 
 Depends-on:
 threadlib
+extern-inline
 lock
 
 configure.ac:
@@ -27,4 +28,3 @@ LGPLv2+
 
 Maintainer:
 Yoann Vandoorselaere
-