diff options
Diffstat (limited to 'newlib/libc/stdio')
-rw-r--r-- | newlib/libc/stdio/findfp.c | 4 | ||||
-rw-r--r-- | newlib/libc/stdio/fopen.c | 5 |
2 files changed, 9 insertions, 0 deletions
diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c index a42a69206..4f1387ccb 100644 --- a/newlib/libc/stdio/findfp.c +++ b/newlib/libc/stdio/findfp.c @@ -22,6 +22,7 @@ #include <errno.h> #include <string.h> #include <fcntl.h> +#include <sys/lock.h> #include "local.h" static void @@ -45,6 +46,9 @@ std (ptr, flags, file, data) ptr->_seek = __sseek; ptr->_close = __sclose; ptr->_data = data; +#ifndef __SINGLE_THREAD__ + __lock_init_recursive (*(_LOCK_RECURSIVE_T *)&ptr->_lock); +#endif #ifdef __SCLE if (__stextmode(ptr->_file)) diff --git a/newlib/libc/stdio/fopen.c b/newlib/libc/stdio/fopen.c index e4708785d..ff2cbec46 100644 --- a/newlib/libc/stdio/fopen.c +++ b/newlib/libc/stdio/fopen.c @@ -119,6 +119,7 @@ static char sccsid[] = "%W% (Berkeley) %G%"; #ifdef __CYGWIN__ #include <fcntl.h> #endif +#include <sys/lock.h> FILE * _DEFUN (_fopen_r, (ptr, file, mode), @@ -157,6 +158,10 @@ _DEFUN (_fopen_r, (ptr, file, mode), fp->_flags |= __SCLE; #endif +#ifndef __SINGLE_THREAD__ + __lock_init_recursive (*(_LOCK_RECURSIVE_T *)&fp->_lock); +#endif + return fp; } |