diff options
author | jhb <jhb@FreeBSD.org> | 2008-04-17 22:17:54 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2008-04-17 22:17:54 +0000 |
commit | ab875ea72654fac71cb13470c85b43412c2e2391 (patch) | |
tree | b259dd878c8cb0ee9fb15608aebb9453ad10e7b1 /include/stdio.h | |
parent | ed4c4d169e660b4253a11c7915cd7a01c4b11398 (diff) | |
download | FreeBSD-src-ab875ea72654fac71cb13470c85b43412c2e2391.zip FreeBSD-src-ab875ea72654fac71cb13470c85b43412c2e2391.tar.gz |
Next stage of stdio cleanup: Retire __sFILEX and merge the fields back into
__sFILE. This was supposed to be done in 6.0. Some notes:
- Where possible I restored the various lines to their pre-__sFILEX state.
- Retire INITEXTRA() and just initialize the wchar bits (orientation and
mbstate) explicitly instead. The various places that used INITEXTRA
didn't need the locking fields or _up initialized. (Some places needed
_up to exist and not be off the end of a NULL or garbage pointer, but
they didn't require it to be initialized to a specific value.)
- For now, stdio.h "knows" that pthread_t is a 'struct pthread *' to
avoid namespace pollution of including all the pthread types in stdio.h.
Once we remove all the inlines and make __sFILE private it can go back
to using pthread_t, etc.
- This does not remove any of the inlines currently and does not change
any of the public ABI of 'FILE'.
MFC after: 1 month
Reviewed by: peter
Diffstat (limited to 'include/stdio.h')
-rw-r--r-- | include/stdio.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/include/stdio.h b/include/stdio.h index 362a0dd..172a15e 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -72,9 +72,6 @@ struct __sbuf { int _size; }; -/* hold a buncha junk that would grow the ABI */ -struct __sFILEX; - /* * stdio state variables. * @@ -121,7 +118,7 @@ typedef struct __sFILE { /* separate buffer for long sequences of ungetc() */ struct __sbuf _ub; /* ungetc buffer */ - struct __sFILEX *_extra; /* additions to FILE to not break ABI */ + unsigned char *_up; /* saved _p when _p is doing ungetc data */ int _ur; /* saved _r when _r is counting ungetc data */ /* tricks to meet minimum requirements even when malloc() fails */ @@ -134,6 +131,12 @@ typedef struct __sFILE { /* Unix stdio files get aligned to block boundaries on fseek() */ int _blksize; /* stat.st_blksize (may be != _bf._size) */ fpos_t _offset; /* current lseek offset */ + + struct pthread_mutex *_fl_mutex; /* used for MT-safety */ + struct pthread *_fl_owner; /* current owner */ + int _fl_count; /* recursive lock count */ + int _orientation; /* orientation for fwide() */ + __mbstate_t _mbstate; /* multibyte conversion state */ } FILE; #ifndef _STDSTREAM_DECLARED |