diff options
author | Roland McGrath <roland@gnu.org> | 2001-08-24 03:20:56 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2001-08-24 03:20:56 +0000 |
commit | 28cb9295720d06156b7c6b577086b199a47902d3 (patch) | |
tree | 2fe6fa788d598f530beb95da0d2f0e4de2e1ad59 | |
parent | 962a3cdd2a2170bbaa8f6b8a341ebfbc6360cb54 (diff) | |
download | glibc-28cb9295720d06156b7c6b577086b199a47902d3.zip glibc-28cb9295720d06156b7c6b577086b199a47902d3.tar.gz glibc-28cb9295720d06156b7c6b577086b199a47902d3.tar.bz2 |
2001-08-23 Roland McGrath <roland@frob.com>
* sysdeps/generic/bits/stdio-lock.h (_IO_lock_initializer): Define to
_LIBC_LOCK_RECURSIVE_INITIALIZER if defined, else do an #error.
(__libc_cleanup_region_start, __libc_cleanup_region_end,
__libc_clean_end): Define these to call the cleanup function after
normal exit when they're supposed to.
* sysdeps/mach/bits/libc-lock.h (__libc_cleanup_region_start):
Take new first arg DOIT, a boolean saying whether to really install
any cleanup handler.
(__libc_cleanup_region_end): Do nothing if start's DOIT arg was zero.
(__libc_cleanup_end): Likewise.
* stdio-common/vfscanf.c (LOCK_STREAM): Pass new arg.
* stdio-common/vfprintf.c (buffered_vfprintf, vfprintf): Likewise.
* sysdeps/mach/hurd/bits/stdio-lock.h (_IO_cleanup_region_start):
Likewise.
* misc/syslog.c (vsyslog, openlog, closelog): Likewise.
* sysdeps/generic/bits/stdio-lock.h
(_IO_cleanup_region_start, _IO_cleanup_region_start_noarg): Likewise.
-rw-r--r-- | bits/stdio-lock.h | 15 | ||||
-rw-r--r-- | sysdeps/generic/bits/stdio-lock.h | 15 |
2 files changed, 18 insertions, 12 deletions
diff --git a/bits/stdio-lock.h b/bits/stdio-lock.h index f7c6108..5b1c1b0 100644 --- a/bits/stdio-lock.h +++ b/bits/stdio-lock.h @@ -1,4 +1,4 @@ -/* Thread package specific definitions of stream lock type. Stub version. +/* Thread package specific definitions of stream lock type. Generic version. Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -25,8 +25,11 @@ __libc_lock_define_recursive (typedef, _IO_lock_t) /* We need recursive (counting) mutexes. */ -#define _IO_lock_initializer ... -#error libio needs recursive mutexes for _IO_MTSAFE_IO +#ifdef _LIBC_LOCK_RECURSIVE_INITIALIZER +# define _IO_lock_initializer _LIBC_LOCK_RECURSIVE_INITIALIZER +#elif _IO_MTSAFE_IO + #error libio needs recursive mutexes for _IO_MTSAFE_IO +#endif #define _IO_lock_init(_name) __libc_lock_init_recursive (_name) #define _IO_lock_fini(_name) __libc_lock_fini_recursive (_name) @@ -35,11 +38,11 @@ __libc_lock_define_recursive (typedef, _IO_lock_t) #define _IO_cleanup_region_start(_fct, _fp) \ - __libc_cleanup_region_start (_fct, _fp) + __libc_cleanup_region_start (((_fp)->_flags & _IO_USER_LOCK) == 0, _fct, _fp) #define _IO_cleanup_region_start_noarg(_fct) \ - __libc_cleanup_region_start (_fct, NULL) + __libc_cleanup_region_start (1, _fct, NULL) #define _IO_cleanup_region_end(_doit) \ - __libc_cleanup_region_end (_doit) + __libc_cleanup_region_end (_doit) #endif /* bits/stdio-lock.h */ diff --git a/sysdeps/generic/bits/stdio-lock.h b/sysdeps/generic/bits/stdio-lock.h index f7c6108..5b1c1b0 100644 --- a/sysdeps/generic/bits/stdio-lock.h +++ b/sysdeps/generic/bits/stdio-lock.h @@ -1,4 +1,4 @@ -/* Thread package specific definitions of stream lock type. Stub version. +/* Thread package specific definitions of stream lock type. Generic version. Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -25,8 +25,11 @@ __libc_lock_define_recursive (typedef, _IO_lock_t) /* We need recursive (counting) mutexes. */ -#define _IO_lock_initializer ... -#error libio needs recursive mutexes for _IO_MTSAFE_IO +#ifdef _LIBC_LOCK_RECURSIVE_INITIALIZER +# define _IO_lock_initializer _LIBC_LOCK_RECURSIVE_INITIALIZER +#elif _IO_MTSAFE_IO + #error libio needs recursive mutexes for _IO_MTSAFE_IO +#endif #define _IO_lock_init(_name) __libc_lock_init_recursive (_name) #define _IO_lock_fini(_name) __libc_lock_fini_recursive (_name) @@ -35,11 +38,11 @@ __libc_lock_define_recursive (typedef, _IO_lock_t) #define _IO_cleanup_region_start(_fct, _fp) \ - __libc_cleanup_region_start (_fct, _fp) + __libc_cleanup_region_start (((_fp)->_flags & _IO_USER_LOCK) == 0, _fct, _fp) #define _IO_cleanup_region_start_noarg(_fct) \ - __libc_cleanup_region_start (_fct, NULL) + __libc_cleanup_region_start (1, _fct, NULL) #define _IO_cleanup_region_end(_doit) \ - __libc_cleanup_region_end (_doit) + __libc_cleanup_region_end (_doit) #endif /* bits/stdio-lock.h */ |