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.
This commit is contained in:
Roland McGrath 2001-08-24 03:20:56 +00:00
parent 962a3cdd2a
commit 28cb929572
2 changed files with 18 additions and 12 deletions

View File

@ -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 */

View File

@ -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 */