[_IO_MTSAFE_IO] (_IO_flockfile, _IO_funlockfile): Add macros which
	test _IO_USER_LOCK flag first.
This commit is contained in:
Ulrich Drepper 2000-09-01 09:09:56 +00:00
parent a91d3cd37b
commit a8e58aa9ab
4 changed files with 18 additions and 2 deletions

View File

@ -18,6 +18,8 @@
* libio/stdio_ext.h: New file.
* libio/genops.c (_IO_flush_all_linebuffered): Add alias _flushlbf.
* libio/libio.h (_IO_USER_LOCK): Define.
[_IO_MTSAFE_IO] (_IO_flockfile, _IO_funlockfile): Add macros which
test _IO_USER_LOCK flag first.
* iconv/gconv_open.c (__gconv_open): Set res to __GCONV_NOMEM is
malloc fails.

View File

@ -442,6 +442,10 @@ extern int _IO_ftrylockfile (_IO_FILE *) __THROW;
#ifdef _IO_MTSAFE_IO
# define _IO_peekc(_fp) _IO_peekc_locked (_fp)
# define _IO_flockfile(_fp) \
if (((_fp)->_mode & _IO_USER_LOCK) == 0) _IO_flockfile (_fp)
# define _IO_funlockfile(_fp) \
if (((_fp)->_mode & _IO_USER_LOCK) == 0) _IO_funlockfile (_fp)
#else
# define _IO_peekc(_fp) _IO_peekc_unlocked (_fp)
# define _IO_flockfile(_fp) /**/

View File

@ -1,3 +1,8 @@
2000-09-01 Ulrich Drepper <drepper@redhat.com>
* sysdeps/pthread/bits/stdio-lock.h (_IO_cleanup_region_start):
Provide definition which respects _IO_USER_LOCK flag.
2000-08-30 Ulrich Drepper <drepper@redhat.com>
* manager.c (pthread_allocate_stack): Clear descriptor only if not

View File

@ -1,5 +1,5 @@
/* Thread package specific definitions of stream lock type.
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998, 2000 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
@ -26,7 +26,12 @@ typedef pthread_mutex_t _IO_lock_t;
#define _IO_cleanup_region_start(_fct, _fp) \
__libc_cleanup_region_start (_fct, _fp)
{ struct _pthread_cleanup_buffer _buffer; \
int _avail = (((_fp)->_mode & _IO_USER_LOCK) == 0 \
&& _pthread_cleanup_push_defer != NULL); \
if (_avail) { \
_pthread_cleanup_push_defer (&_buffer, (_fct), (_fp)); \
}
#define _IO_cleanup_region_end(_doit) \
__libc_cleanup_region_end (_doit)
#define _IO_lock_init(_name) \