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:
Jeff Johnston
2004-06-11 20:37:10 +00:00
parent af6b55758b
commit d0bd3e6f56
14 changed files with 183 additions and 56 deletions

View File

@ -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 ();

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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);
}