2004-06-11 Antony King <antony.king@st.com>
* libc/include/sys/_types.h: Include <sys/lock.h> and change _flock_t to be of type _LOCK_RECURSIVE_T. * libc/include/sys/reent.h: (_REENT_INIT): Reformat. (_REENT_INIT_PTR): Ditto. Use memset where appropriate. (_global_impure_ptr): New declaration. (_GLOBAL_REENT): Change to be _global_impure_ptr. * libc/include/sys/stdio.h: Include <sys/lock.h> and <sys/reent.h>. (_flockfile)[!_SINGLE_THREAD]: Add code for lock call. (_funlockfile)[!SINGLE_THREAD]: Ditto. * libc/reent/impure.c: Set _global_impure_ptr to _impure_ptr. * libc/stdio/fclose.c: Remove casting of fp lock to _LOCK_RECURSIVE_T. * libc/stdio/findfp.c: Ditto. * libc/stdio/fopen.c: Ditto. * libc/stdio/freopen.c: Ditto. * libc/stdio/vfprintf.c: Ditto. * libc/stdio64/fopen64.c: Ditto. * libc/stdlib/envlock.c: Add default stubs that use generic locking code. * libc/stdlib/mlock.c: Ditto. Jeff Johnston <jjohnstn@redhat.com> * libc/sys/linux/sys/_types.h (__flock_mutex_t): New subtype. (_flock_t): Change to be a struct containing a single member named mutex which is of type __flock_mutex_t.
This commit is contained in:
@ -98,7 +98,7 @@ _DEFUN(_fclose_r, (rptr, fp),
|
||||
fp->_flags = 0; /* release this FILE for reuse */
|
||||
_funlockfile (fp);
|
||||
#ifndef __SINGLE_THREAD__
|
||||
__lock_close_recursive (*(_LOCK_RECURSIVE_T *)&fp->_lock);
|
||||
__lock_close_recursive (fp->_lock);
|
||||
#endif
|
||||
|
||||
__sfp_lock_release ();
|
||||
|
@ -47,7 +47,7 @@ _DEFUN(std, (ptr, flags, file, data),
|
||||
ptr->_seek = __sseek;
|
||||
ptr->_close = __sclose;
|
||||
#if !defined(__SINGLE_THREAD__) && !defined(_REENT_SMALL)
|
||||
__lock_init_recursive (*(_LOCK_RECURSIVE_T *)&ptr->_lock);
|
||||
__lock_init_recursive (ptr->_lock);
|
||||
/*
|
||||
* #else
|
||||
* lock is already initialized in __sfp
|
||||
@ -112,7 +112,7 @@ found:
|
||||
fp->_file = -1; /* no file */
|
||||
fp->_flags = 1; /* reserve this slot; caller sets real flags */
|
||||
#ifndef __SINGLE_THREAD__
|
||||
__lock_init_recursive (*(_LOCK_RECURSIVE_T *)&fp->_lock);
|
||||
__lock_init_recursive (fp->_lock);
|
||||
#endif
|
||||
__sfp_lock_release ();
|
||||
|
||||
@ -143,8 +143,8 @@ _VOID
|
||||
_DEFUN(_cleanup_r, (ptr),
|
||||
struct _reent *ptr)
|
||||
{
|
||||
/* _CAST_VOID _fwalk(fclose); */
|
||||
_CAST_VOID _fwalk (ptr, fflush); /* `cheating' */
|
||||
_CAST_VOID _fwalk(ptr, fclose);
|
||||
/* _CAST_VOID _fwalk (ptr, fflush); */ /* `cheating' */
|
||||
}
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
|
@ -143,7 +143,7 @@ _DEFUN(_fopen_r, (ptr, file, mode),
|
||||
__sfp_lock_acquire ();
|
||||
fp->_flags = 0; /* release */
|
||||
#ifndef __SINGLE_THREAD__
|
||||
__lock_close_recursive (*(_LOCK_RECURSIVE_T *)&fp->_lock);
|
||||
__lock_close_recursive (fp->_lock);
|
||||
#endif
|
||||
__sfp_lock_release ();
|
||||
return NULL;
|
||||
|
@ -157,7 +157,7 @@ _DEFUN(_freopen_r, (ptr, file, mode, fp),
|
||||
ptr->_errno = e; /* restore in case _close clobbered */
|
||||
_funlockfile (fp);
|
||||
#ifndef __SINGLE_THREAD__
|
||||
__lock_close_recursive (*(_LOCK_RECURSIVE_T *)&fp->_lock);
|
||||
__lock_close_recursive (fp->_lock);
|
||||
#endif
|
||||
__sfp_lock_release ();
|
||||
return NULL;
|
||||
|
@ -255,7 +255,7 @@ _DEFUN(__sbprintf, (rptr, fp, fmt, ap),
|
||||
fake._bf._size = fake._w = sizeof (buf);
|
||||
fake._lbfsize = 0; /* not actually used, but Just In Case */
|
||||
#ifndef __SINGLE_THREAD__
|
||||
__lock_init_recursive (*(_LOCK_RECURSIVE_T *)&fake._lock);
|
||||
__lock_init_recursive (fake._lock);
|
||||
#endif
|
||||
|
||||
/* do the work, then copy any error status */
|
||||
@ -266,7 +266,7 @@ _DEFUN(__sbprintf, (rptr, fp, fmt, ap),
|
||||
fp->_flags |= __SERR;
|
||||
|
||||
#ifndef __SINGLE_THREAD__
|
||||
__lock_close_recursive (*(_LOCK_RECURSIVE_T *)&fake._lock);
|
||||
__lock_close_recursive (fake._lock);
|
||||
#endif
|
||||
return (ret);
|
||||
}
|
||||
|
Reference in New Issue
Block a user