diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2004-06-11 20:37:10 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2004-06-11 20:37:10 +0000 |
commit | d0bd3e6f5653a16c8e82c969fb805f4a7d4faf40 (patch) | |
tree | 32f677032512db74362efe46308b87437c5fc58e /newlib/libc/include/sys/reent.h | |
parent | af6b55758bc44c58e70a1baf4061d8a8028f31d6 (diff) | |
download | cygnal-d0bd3e6f5653a16c8e82c969fb805f4a7d4faf40.tar.gz cygnal-d0bd3e6f5653a16c8e82c969fb805f4a7d4faf40.tar.bz2 cygnal-d0bd3e6f5653a16c8e82c969fb805f4a7d4faf40.zip |
2004-06-11 Antony King <antony.king@st.com>
* libc/include/sys/_types.h: Include <sys/lock.h> and change
_flock_t to be of type _LOCK_RECURSIVE_T.
* libc/include/sys/reent.h: (_REENT_INIT): Reformat.
(_REENT_INIT_PTR): Ditto. Use memset where appropriate.
(_global_impure_ptr): New declaration.
(_GLOBAL_REENT): Change to be _global_impure_ptr.
* libc/include/sys/stdio.h: Include <sys/lock.h> and
<sys/reent.h>.
(_flockfile)[!_SINGLE_THREAD]: Add code for lock call.
(_funlockfile)[!SINGLE_THREAD]: Ditto.
* libc/reent/impure.c: Set _global_impure_ptr to _impure_ptr.
* libc/stdio/fclose.c: Remove casting of fp lock to
_LOCK_RECURSIVE_T.
* libc/stdio/findfp.c: Ditto.
* libc/stdio/fopen.c: Ditto.
* libc/stdio/freopen.c: Ditto.
* libc/stdio/vfprintf.c: Ditto.
* libc/stdio64/fopen64.c: Ditto.
* libc/stdlib/envlock.c: Add default stubs that use generic
locking code.
* libc/stdlib/mlock.c: Ditto.
Jeff Johnston <jjohnstn@redhat.com>
* libc/sys/linux/sys/_types.h (__flock_mutex_t): New subtype.
(_flock_t): Change to be a struct containing a single member
named mutex which is of type __flock_mutex_t.
Diffstat (limited to 'newlib/libc/include/sys/reent.h')
-rw-r--r-- | newlib/libc/include/sys/reent.h | 106 |
1 files changed, 83 insertions, 23 deletions
diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h index fa19a2980..f8cc41ed1 100644 --- a/newlib/libc/include/sys/reent.h +++ b/newlib/libc/include/sys/reent.h @@ -381,10 +381,31 @@ struct _reent }; #define _REENT_INIT(var) \ - { (__FILE *)&var.__sf_fake, (__FILE *)&var.__sf_fake, \ - (__FILE *)&var.__sf_fake, 0, 0, _NULL, 0, 0, \ - "C", _NULL, _NULL, 0, 0, _NULL, _NULL, _NULL, _NULL, _NULL, \ - { 0, _NULL, _NULL, 0 }, { _NULL, 0, _NULL }, _NULL, 0, _NULL, _NULL } + { (__FILE *)&var.__sf_fake, \ + (__FILE *)&var.__sf_fake, \ + (__FILE *)&var.__sf_fake, \ + 0, \ + 0, \ + _NULL, \ + 0, \ + 0, \ + "C", \ + _NULL, \ + _NULL, \ + 0, \ + 0, \ + _NULL, \ + _NULL, \ + _NULL, \ + _NULL, \ + _NULL, \ + {0, {_NULL}, _NULL}, \ + {_NULL, 0, _NULL}, \ + _NULL, \ + {_NULL, 0, 0, 0, 0, {_NULL, 0}, 0, _NULL}, \ + _NULL, \ + _NULL \ + } #define _REENT_INIT_PTR(var) \ { var->_stdin = (__FILE *)&var->__sf_fake; \ @@ -412,16 +433,17 @@ struct _reent var->__sglue._niobs = 0; \ var->__sglue._iobs = _NULL; \ var->__sf = 0; \ - var->_misc = _NULL; \ - var->_signal_buf = _NULL; \ - var->_getdate_err = 0; \ var->__sf_fake._p = _NULL; \ var->__sf_fake._r = 0; \ var->__sf_fake._w = 0; \ var->__sf_fake._flags = 0; \ var->__sf_fake._file = 0; \ + var->__sf_fake._bf._base = _NULL; \ + var->__sf_fake._bf._size = 0; \ var->__sf_fake._lbfsize = 0; \ var->__sf_fake._data = _NULL; \ + var->_misc = _NULL; \ + var->_signal_buf = _NULL; \ } /* Only built the assert() calls if we are built with debugging. */ @@ -608,23 +630,61 @@ struct _reent }; #define _REENT_INIT(var) \ - { 0, &var.__sf[0], &var.__sf[1], &var.__sf[2], 0, "", 0, "C", \ - 0, _NULL, _NULL, 0, _NULL, _NULL, 0, _NULL, { {0, _NULL, "", \ - { 0,0,0,0,0,0,0,0}, 0, 1, \ - {{_RAND48_SEED_0, _RAND48_SEED_1, _RAND48_SEED_2}, \ - {_RAND48_MULT_0, _RAND48_MULT_1, _RAND48_MULT_2}, _RAND48_ADD}, \ - {0, {0}}, {0, {0}}, {0, {0}}, "", "", 0, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}} } } } + { 0, \ + &var.__sf[0], \ + &var.__sf[1], \ + &var.__sf[2], \ + 0, \ + "", \ + 0, \ + "C", \ + 0, \ + _NULL, \ + _NULL, \ + 0, \ + _NULL, \ + _NULL, \ + 0, \ + _NULL, \ + { \ + { \ + 0, \ + _NULL, \ + "", \ + {0, 0, 0, 0, 0, 0, 0, 0, 0}, \ + 0, \ + 1, \ + { \ + {_RAND48_SEED_0, _RAND48_SEED_1, _RAND48_SEED_2}, \ + {_RAND48_MULT_0, _RAND48_MULT_1, _RAND48_MULT_2}, \ + _RAND48_ADD \ + }, \ + {0, {0}}, \ + {0, {0}}, \ + {0, {0}}, \ + "", \ + "", \ + 0, \ + {0, {0}}, \ + {0, {0}}, \ + {0, {0}}, \ + {0, {0}}, \ + {0, {0}} \ + } \ + }, \ + _NULL, \ + {_NULL, 0, {_NULL}, {{_NULL}, 0}}, \ + _NULL, \ + {_NULL, 0, _NULL} \ + } #define _REENT_INIT_PTR(var) \ - { int i; \ - char *tmp_ptr; \ - var->_errno = 0; \ + { var->_errno = 0; \ var->_stdin = &var->__sf[0]; \ var->_stdout = &var->__sf[1]; \ var->_stderr = &var->__sf[2]; \ var->_inc = 0; \ - for (i = 0; i < _REENT_EMERGENCY_SIZE; ++i) \ - var->_emergency[i] = 0; \ + memset(&var->_emergency, 0, sizeof(var->_emergency)); \ var->_current_category = 0; \ var->_current_locale = "C"; \ var->__sdidinit = 0; \ @@ -638,9 +698,7 @@ struct _reent var->_new._reent._unused_rand = 0; \ var->_new._reent._strtok_last = _NULL; \ var->_new._reent._asctime_buf[0] = 0; \ - tmp_ptr = (char *)&var->_new._reent._localtime_buf; \ - for (i = 0; i < sizeof(struct __tm); ++i) \ - tmp_ptr[i] = 0; \ + memset(&var->_new._reent._localtime_buf, 0, sizeof(var->_new._reent._localtime_buf)); \ var->_new._reent._gamma_signgam = 0; \ var->_new._reent._rand_next = 1; \ var->_new._reent._r48._seed[0] = _RAND48_SEED_0; \ @@ -670,6 +728,7 @@ struct _reent var->_new._reent._signal_buf[0] = '\0'; \ var->_new._reent._getdate_err = 0; \ var->_atexit = _NULL; \ + var->_atexit0._next = _NULL; \ var->_atexit0._ind = 0; \ var->_atexit0._fns[0] = _NULL; \ var->_atexit0._on_exit_args._fntypes = 0; \ @@ -678,7 +737,7 @@ struct _reent var->__sglue._next = _NULL; \ var->__sglue._niobs = 0; \ var->__sglue._iobs = _NULL; \ - memset(var->__sf,0,sizeof(var->__sf)); \ + memset(&var->__sf, 0, sizeof(var->__sf)); \ } #define _REENT_CHECK_RAND48(ptr) /* nothing */ @@ -728,6 +787,7 @@ struct _reent #endif extern struct _reent *_impure_ptr __ATTRIBUTE_IMPURE_PTR__; +extern struct _reent *_CONST _global_impure_ptr __ATTRIBUTE_IMPURE_PTR__; void _reclaim_reent _PARAMS ((struct _reent *)); @@ -746,7 +806,7 @@ void _reclaim_reent _PARAMS ((struct _reent *)); #endif /* !_REENT_ONLY */ -#define _GLOBAL_REENT _impure_ptr +#define _GLOBAL_REENT _global_impure_ptr #ifdef __cplusplus } |