41 lines
1.7 KiB
Plaintext
41 lines
1.7 KiB
Plaintext
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.
|
|
|
|
|
|
Things to do.
|
|
Fix printf so it uses the ininf function.
|