NetBSD/lib/libpthread/stdio
proven b1fc22f93a Add one complete thread safe stdio. 1994-02-07 22:05:21 +00:00
..
Makefile.inc
README
clrerr.c
fclose.c
fdopen.c
feof.c
ferror.c
fflush.c
fgetc.c
fgetline.c
fgetpos.c
fgets.c
fileno.c
findfp.c
flags.c
floatio.h
fopen.c
fprintf.c
fpurge.c
fputc.c
fputs.c
fread.c
freopen.c
fscanf.c
fseek.c
fsetpos.c
ftell.c
funopen.c
fvwrite.c
fvwrite.h
fwalk.c
fwrite.c
getc.c
getc_unlocked.c
getchar.c
getchar_unlocked.c
gets.c
getw.c
glue.h
local.h
makebuf.c
mktemp.c
perror.c
perror.c.old
printf.c
putc.c
putc_unlocked.c
putchar.c
putchar_unlocked.c
puts.c
putw.c
refill.c
remove.c
rewind.c
rget.c
scanf.c
setbuf.c
setbuffer.c
setvbuf.c
snprintf.c
sprintf.c
sscanf.c
stdio.c
strerror.c
tempnam.c
tmpfile.c
tmpnam.c
ungetc.c
vfprintf.c
vfscanf.c
vprintf.c
vscanf.c
vsnprintf.c
vsprintf.c
vsscanf.c
wbuf.c
wsetup.c

README

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.