diff options
Diffstat (limited to 'lib/libpthread/stdio/README')
| -rw-r--r-- | lib/libpthread/stdio/README | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/libpthread/stdio/README b/lib/libpthread/stdio/README new file mode 100644 index 000000000000..d8d7dd779f63 --- /dev/null +++ b/lib/libpthread/stdio/README @@ -0,0 +1,37 @@ +This is a threadsafe stdio based on the BSD stdio written by Chris Torek. + +INCLUDE FILES AND PORTING +To continue to make this package portable, some basic rules on includes +files must be followed. + +pthread.h should be included first (if it is to be included). +stdio.h should be included. + +INTERNAL LOCKING +1. All functions that can be called by the user must have __flockfile at the + begining and a __funlockfile at the end. __Flockfile is a counting mutex, + The thread that owns the lock can call __flockfile as many times as + it wants, but must call an equal number of __funlockfile before the + lock will be released. +2. All functions starting with __ shouldn't need addtional locking. +3. Anything that writes the variable __sglue should lock __sfp_mutex, + check __sfp_state, and do a condion wait if it is set. +4. Anything that checks fp->_flag for valididity should also lock + __sfp_mutex. +5. Anything that reads the variable __sglue should lock __sfp_mutex, increment + __sfp_state, and then unlock the mutex. At function return it should + lock the mutex again decrement __sfp_state and check if zero. If so + do a cond_signal, and unlock the mutex. +6. The functions fopen, fdopen, and freopen are the only functions that + will change a fp->_file +7. fdopen and fopen both allocate the next fp by locking __sfp_mutex + checking fp->_flags and then setting it if free. +8. freopen tries to preserve fp->_file. It sets __sfp_mutex, then it + tries to lock fp->_file and close it. +9. __sinit is done with a pthread_once routine. + +Copyright (c) 1993 Chris Provenzano. All rights reserved. + +This product includes software developed by the Univeristy of California, +Berkeley and its contributors. + |
