diff options
author | Joel Sherrill <joel.sherrill@oarcorp.com> | 2013-03-26 16:07:55 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@oarcorp.com> | 2013-03-26 16:07:55 +0000 |
commit | 1ebc8da242a1e8dd7707f2bcc51c22d4e1e64990 (patch) | |
tree | cdad8b918a575fa56ab1e67de6c20a77c87d171b /newlib/libc | |
parent | 74d17001b47a38074b96c2b6e4ab8df0f146ab44 (diff) | |
download | cygnal-1ebc8da242a1e8dd7707f2bcc51c22d4e1e64990.tar.gz cygnal-1ebc8da242a1e8dd7707f2bcc51c22d4e1e64990.tar.bz2 cygnal-1ebc8da242a1e8dd7707f2bcc51c22d4e1e64990.zip |
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.
Diffstat (limited to 'newlib/libc')
-rw-r--r-- | newlib/libc/stdio/fclose.c | 6 | ||||
-rw-r--r-- | newlib/libc/stdio/freopen.c | 8 | ||||
-rw-r--r-- | newlib/libc/stdio/local.h | 11 | ||||
-rw-r--r-- | newlib/libc/stdio64/freopen64.c | 4 |
4 files changed, 17 insertions, 12 deletions
diff --git a/newlib/libc/stdio/fclose.c b/newlib/libc/stdio/fclose.c index 790496413..fd054feaa 100644 --- a/newlib/libc/stdio/fclose.c +++ b/newlib/libc/stdio/fclose.c @@ -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 diff --git a/newlib/libc/stdio/freopen.c b/newlib/libc/stdio/freopen.c index b33eb1e22..884e56136 100644 --- a/newlib/libc/stdio/freopen.c +++ b/newlib/libc/stdio/freopen.c @@ -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; diff --git a/newlib/libc/stdio/local.h b/newlib/libc/stdio/local.h index b4bc5e01a..58a16bd47 100644 --- a/newlib/libc/stdio/local.h +++ b/newlib/libc/stdio/local.h @@ -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)); diff --git a/newlib/libc/stdio64/freopen64.c b/newlib/libc/stdio64/freopen64.c index db0e1ee0f..dfe36ea3d 100644 --- a/newlib/libc/stdio64/freopen64.c +++ b/newlib/libc/stdio64/freopen64.c @@ -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); |