diff options
Diffstat (limited to 'linuxthreads')
-rw-r--r-- | linuxthreads/ChangeLog | 9 | ||||
-rw-r--r-- | linuxthreads/sysdeps/pthread/bits/libc-lock.h | 10 | ||||
-rw-r--r-- | linuxthreads/sysdeps/pthread/bits/stdio-lock.h | 47 |
3 files changed, 15 insertions, 51 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index fcb2e07316..65a2077939 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,12 @@ +2001-08-23 Roland McGrath <roland@frob.com> + + * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_region_start): Take + new first argument, skip the cleanup handler if it's zero. + (_LIBC_LOCK_RECURSIVE_INITIALIZER): New macro. + (__libc_lock_define_initialized_recursive): Use it. + * sysdeps/pthread/bits/stdio-lock.h: File removed. + The sysdeps/generic file from the main tree now suffices. + 2001-08-22 Roland McGrath <roland@frob.com> * sysdeps/pthread/bits/stdio-lock.h: Include <bits/libc-lock.h> diff --git a/linuxthreads/sysdeps/pthread/bits/libc-lock.h b/linuxthreads/sysdeps/pthread/bits/libc-lock.h index fc68979aab..866e89d510 100644 --- a/linuxthreads/sysdeps/pthread/bits/libc-lock.h +++ b/linuxthreads/sysdeps/pthread/bits/libc-lock.h @@ -72,8 +72,10 @@ typedef pthread_key_t __libc_key_t; /* Define an initialized recursive lock variable NAME with storage class CLASS. */ -#define __libc_lock_define_initialized_recursive(CLS,NAME) \ - CLS __libc_lock_recursive_t NAME = {PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP}; +#define __libc_lock_define_initialized_recursive(CLASS,NAME) \ + CLASS __libc_lock_recursive_t NAME = _LIBC_LOCK_RECURSIVE_INITIALIZER; +#define _LIBC_LOCK_RECURSIVE_INITIALIZER \ + {PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP} /* Initialize the named lock variable, leaving it in a consistent, unlocked state. */ @@ -164,9 +166,9 @@ typedef pthread_key_t __libc_key_t; /* Start critical region with cleanup. */ -#define __libc_cleanup_region_start(FCT, ARG) \ +#define __libc_cleanup_region_start(DOIT, FCT, ARG) \ { struct _pthread_cleanup_buffer _buffer; \ - int _avail = _pthread_cleanup_push_defer != NULL; \ + int _avail = (DOIT) && _pthread_cleanup_push_defer != NULL; \ if (_avail) { \ _pthread_cleanup_push_defer (&_buffer, (FCT), (ARG)); \ } diff --git a/linuxthreads/sysdeps/pthread/bits/stdio-lock.h b/linuxthreads/sysdeps/pthread/bits/stdio-lock.h deleted file mode 100644 index 4dc7dcfc52..0000000000 --- a/linuxthreads/sysdeps/pthread/bits/stdio-lock.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Thread package specific definitions of stream lock type. - Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include <bits/libc-lock.h> - -__libc_lock_define_recursive (typedef, _IO_lock_t) - -/* We need recursive (counting) mutexes. */ -#define _IO_lock_initializer {PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP} - -#define _IO_lock_init(_name) __libc_lock_init_recursive (_name) -#define _IO_lock_fini(_name) __libc_lock_fini_recursive (_name) -#define _IO_lock_lock(_name) __libc_lock_lock_recursive (_name) -#define _IO_lock_unlock(_name) __libc_lock_unlock_recursive (_name) - - -#define _IO_cleanup_region_start(_fct, _fp) \ - { struct _pthread_cleanup_buffer _buffer; \ - int _avail = (((_fp)->_flags & _IO_USER_LOCK) == 0 \ - && _pthread_cleanup_push_defer != NULL); \ - if (_avail) { \ - _pthread_cleanup_push_defer (&_buffer, (_fct), (_fp)); \ - } -#define _IO_cleanup_region_start_noarg(_fct) \ - { struct _pthread_cleanup_buffer _buffer; \ - int _avail = _pthread_cleanup_push_defer != NULL; \ - if (_avail) { \ - _pthread_cleanup_push_defer (&_buffer, (_fct), NULL); \ - } -#define _IO_cleanup_region_end(_doit) \ - __libc_cleanup_region_end (_doit) |