2013-03-26 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libc/stdio/local.h (_STDIO_WITH_THREAD_CANCELLATION_SUPPORT): New define. * libc/stdio/fclose.c: Use _STDIO_WITH_THREAD_CANCELLATION_SUPPORT. * libc/stdio/freopen.c: Likewise. * libc/stdio64/freopen64.c: Likewise.
This commit is contained in:
parent
74d17001b4
commit
1ebc8da242
@ -1,3 +1,12 @@
|
||||
2013-03-26 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||
|
||||
* libc/stdio/local.h (_STDIO_WITH_THREAD_CANCELLATION_SUPPORT):
|
||||
New define.
|
||||
* libc/stdio/fclose.c: Use
|
||||
_STDIO_WITH_THREAD_CANCELLATION_SUPPORT.
|
||||
* libc/stdio/freopen.c: Likewise.
|
||||
* libc/stdio64/freopen64.c: Likewise.
|
||||
|
||||
2013-03-15 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||
|
||||
* newlib/libc/stdio/findfp.c (glue_with_file): New.
|
||||
|
@ -78,7 +78,7 @@ _DEFUN(_fclose_r, (rptr, fp),
|
||||
|
||||
/* We can't use the _newlib_flockfile_XXX macros here due to the
|
||||
interlocked locking with the sfp_lock. */
|
||||
#if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS)
|
||||
#ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
|
||||
int __oldcancel;
|
||||
pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &__oldcancel);
|
||||
#endif
|
||||
@ -87,7 +87,7 @@ _DEFUN(_fclose_r, (rptr, fp),
|
||||
if (fp->_flags == 0) /* not open! */
|
||||
{
|
||||
_funlockfile (fp);
|
||||
#if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS)
|
||||
#ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
|
||||
pthread_setcancelstate (__oldcancel, &__oldcancel);
|
||||
#endif
|
||||
return (0);
|
||||
@ -112,7 +112,7 @@ _DEFUN(_fclose_r, (rptr, fp),
|
||||
#endif
|
||||
|
||||
__sfp_lock_release ();
|
||||
#if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS)
|
||||
#ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
|
||||
pthread_setcancelstate (__oldcancel, &__oldcancel);
|
||||
#endif
|
||||
|
||||
|
@ -102,7 +102,7 @@ _DEFUN(_freopen_r, (ptr, file, mode, fp),
|
||||
|
||||
/* We can't use the _newlib_flockfile_XXX macros here due to the
|
||||
interlocked locking with the sfp_lock. */
|
||||
#if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS)
|
||||
#ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
|
||||
int __oldcancel;
|
||||
pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &__oldcancel);
|
||||
#endif
|
||||
@ -111,7 +111,7 @@ _DEFUN(_freopen_r, (ptr, file, mode, fp),
|
||||
if ((flags = __sflags (ptr, mode, &oflags)) == 0)
|
||||
{
|
||||
_funlockfile (fp);
|
||||
#if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS)
|
||||
#ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
|
||||
pthread_setcancelstate (__oldcancel, &__oldcancel);
|
||||
#endif
|
||||
_fclose_r (ptr, fp);
|
||||
@ -222,7 +222,7 @@ _DEFUN(_freopen_r, (ptr, file, mode, fp),
|
||||
__lock_close_recursive (fp->_lock);
|
||||
#endif
|
||||
__sfp_lock_release ();
|
||||
#if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS)
|
||||
#ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
|
||||
pthread_setcancelstate (__oldcancel, &__oldcancel);
|
||||
#endif
|
||||
return NULL;
|
||||
@ -242,7 +242,7 @@ _DEFUN(_freopen_r, (ptr, file, mode, fp),
|
||||
#endif
|
||||
|
||||
_funlockfile (fp);
|
||||
#if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS)
|
||||
#ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
|
||||
pthread_setcancelstate (__oldcancel, &__oldcancel);
|
||||
#endif
|
||||
return fp;
|
||||
|
@ -45,7 +45,12 @@
|
||||
section before reaching the end of the critical section's code end, use
|
||||
the appropriate _newlib_XXX_exit macro. */
|
||||
|
||||
#if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS)
|
||||
#if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS) \
|
||||
&& !defined (__rtems__)
|
||||
#define _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
|
||||
#endif
|
||||
|
||||
#ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
|
||||
#include <pthread.h>
|
||||
|
||||
/* Start a stream oriented critical section: */
|
||||
@ -84,7 +89,7 @@
|
||||
pthread_setcancelstate (__oldsfpcancel, &__oldsfpcancel); \
|
||||
}
|
||||
|
||||
#else /* __SINGLE_THREAD__ || !_POSIX_THREADS */
|
||||
#else /* !_STDIO_WITH_THREAD_CANCELLATION_SUPPORT */
|
||||
|
||||
# define _newlib_flockfile_start(_fp) \
|
||||
{ \
|
||||
@ -108,7 +113,7 @@
|
||||
__sfp_lock_release (); \
|
||||
}
|
||||
|
||||
#endif /* !__SINGLE_THREAD__ && _POSIX_THREADS */
|
||||
#endif /* _STDIO_WITH_THREAD_CANCELLATION_SUPPORT */
|
||||
|
||||
extern u_char *_EXFUN(__sccl, (char *, u_char *fmt));
|
||||
extern int _EXFUN(__svfscanf_r,(struct _reent *,FILE *, _CONST char *,va_list));
|
||||
|
@ -102,7 +102,7 @@ _DEFUN (_freopen64_r, (ptr, file, mode, fp),
|
||||
|
||||
/* We can't use the _newlib_flockfile_XXX macros here due to the
|
||||
interlocked locking with the sfp_lock. */
|
||||
#if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS)
|
||||
#ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
|
||||
int __oldcancel;
|
||||
pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &__oldcancel);
|
||||
#endif
|
||||
@ -111,7 +111,7 @@ _DEFUN (_freopen64_r, (ptr, file, mode, fp),
|
||||
if ((flags = __sflags (ptr, mode, &oflags)) == 0)
|
||||
{
|
||||
_funlockfile (fp);
|
||||
#if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS)
|
||||
#ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
|
||||
pthread_setcancelstate (__oldcancel, &__oldcancel);
|
||||
#endif
|
||||
_fclose_r (ptr, fp);
|
||||
|
Loading…
Reference in New Issue
Block a user