mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
42 lines
1.7 KiB
Text
42 lines
1.7 KiB
Text
|
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.
|