diff options
Diffstat (limited to 'mit-pthreads/stdio/README')
-rwxr-xr-x | mit-pthreads/stdio/README | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/mit-pthreads/stdio/README b/mit-pthreads/stdio/README new file mode 100755 index 00000000000..8e4c07909e9 --- /dev/null +++ b/mit-pthreads/stdio/README @@ -0,0 +1,41 @@ +Copyright (c) 1993, 1994 Chris Provenzano. All rights reserved. + +This is a threadsafe stdio based on the BSD stdio written by Chris Torek. +This product includes software developed by the Univeristy of California, +Berkeley and its contributors. + +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. The routine 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. + + + +Things to do. + +Fix printf so it uses the ininf function. |