README
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:2k
- 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.