Mercurial > hg > octave-lyh > gnulib-hg
changeset 17182:10268a7a6854
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.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Tue, 20 Nov 2012 22:25:08 -0800 |
parents | a80e4b259d9b |
children | f3fa9d9507c7 |
files | 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 |
diffstat | 11 files changed, 51 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- 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):
--- a/lib/glthread/cond.c +++ b/lib/glthread/cond.c @@ -19,6 +19,7 @@ #include <config.h> +#define _GLTHREAD_COND_INLINE _GL_EXTERN_INLINE #include "glthread/cond.h" /* ========================================================================= */ @@ -90,7 +91,7 @@ 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 @@ /* 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 @@ } /* 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 @@ } /* 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;
--- a/lib/glthread/cond.h +++ b/lib/glthread/cond.h @@ -55,6 +55,11 @@ #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 @@ 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 @@ } #endif +_GL_INLINE_HEADER_END + #endif /* _GLTHREAD_COND_H */
--- a/lib/glthread/lock.c +++ b/lib/glthread/lock.c @@ -682,7 +682,7 @@ /* 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 @@ } /* 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 @@ } /* 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;
--- a/lib/glthread/thread.c +++ b/lib/glthread/thread.c @@ -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 @@ }; /* Return a real HANDLE object for the current thread. */ -static inline HANDLE +static HANDLE get_current_thread_handle (void) { HANDLE this_handle;
--- a/lib/glthread/thread.h +++ b/lib/glthread/thread.h @@ -74,6 +74,11 @@ #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 @@ 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 @@ } #endif +_GL_INLINE_HEADER_END + #endif /* _GLTHREAD_THREAD_H */
--- a/m4/cond.m4 +++ b/m4/cond.m4 @@ -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 @@ AC_DEFUN([gl_COND], [ AC_REQUIRE([gl_THREADLIB]) - AC_REQUIRE([AC_C_INLINE]) ])
--- a/m4/lock.m4 +++ b/m4/lock.m4 @@ -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 @@ 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], [:])
--- a/m4/thread.m4 +++ b/m4/thread.m4 @@ -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 @@ AC_DEFUN([gl_THREAD], [ AC_REQUIRE([gl_THREADLIB]) - AC_REQUIRE([AC_C_INLINE]) if test $gl_threads_api = posix; then gl_save_LIBS="$LIBS"