2013-11-29 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libc/include/pthread.h (pthread_cleanup_push): Delete prototype and add macro of the same name. (pthread_cleanup_pop): Likewise. (_pthread_cleanup_context): Define. (_pthread_cleanup_push): Likewise. (_pthread_cleanup_pop): Likewise. (pthread_cleanup_push_defer_np): Define if _GNU_SOURCE is defined. (pthread_cleanup_pop_restore_np): Likewise. (_pthread_cleanup_push_defer): Likewise. (_pthread_cleanup_pop_restore): Likewise.
This commit is contained in:
parent
62c28b76ac
commit
a534dfd26e
|
@ -1,3 +1,16 @@
|
||||||
|
2013-11-29 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
|
* libc/include/pthread.h (pthread_cleanup_push): Delete prototype
|
||||||
|
and add macro of the same name.
|
||||||
|
(pthread_cleanup_pop): Likewise.
|
||||||
|
(_pthread_cleanup_context): Define.
|
||||||
|
(_pthread_cleanup_push): Likewise.
|
||||||
|
(_pthread_cleanup_pop): Likewise.
|
||||||
|
(pthread_cleanup_push_defer_np): Define if _GNU_SOURCE is defined.
|
||||||
|
(pthread_cleanup_pop_restore_np): Likewise.
|
||||||
|
(_pthread_cleanup_push_defer): Likewise.
|
||||||
|
(_pthread_cleanup_pop_restore): Likewise.
|
||||||
|
|
||||||
2013-11-29 Jennifer Averett <jennifer.averett@oarcorp.com>
|
2013-11-29 Jennifer Averett <jennifer.averett@oarcorp.com>
|
||||||
|
|
||||||
* libc/include/pthread.h (pthread_attr_setaffinity_np):
|
* libc/include/pthread.h (pthread_attr_setaffinity_np):
|
||||||
|
|
|
@ -34,6 +34,13 @@ extern "C" {
|
||||||
#include <sys/sched.h>
|
#include <sys/sched.h>
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
|
|
||||||
|
struct _pthread_cleanup_context {
|
||||||
|
void (*_routine)(void *);
|
||||||
|
void *_arg;
|
||||||
|
int _canceltype;
|
||||||
|
struct _pthread_cleanup_context *_previous;
|
||||||
|
};
|
||||||
|
|
||||||
/* Register Fork Handlers */
|
/* Register Fork Handlers */
|
||||||
int _EXFUN(pthread_atfork,(void (*prepare)(void), void (*parent)(void),
|
int _EXFUN(pthread_atfork,(void (*prepare)(void), void (*parent)(void),
|
||||||
void (*child)(void)));
|
void (*child)(void)));
|
||||||
|
@ -304,9 +311,43 @@ void _EXFUN(pthread_testcancel, (void));
|
||||||
|
|
||||||
/* Establishing Cancellation Handlers, P1003.1c/Draft 10, p. 184 */
|
/* Establishing Cancellation Handlers, P1003.1c/Draft 10, p. 184 */
|
||||||
|
|
||||||
void _EXFUN(pthread_cleanup_push,
|
void _EXFUN(_pthread_cleanup_push,
|
||||||
(void (*__routine)( void * ), void *__arg));
|
(struct _pthread_cleanup_context *_context,
|
||||||
void _EXFUN(pthread_cleanup_pop, (int __execute));
|
void (*_routine)(void *), void *_arg));
|
||||||
|
|
||||||
|
void _EXFUN(_pthread_cleanup_pop,
|
||||||
|
(struct _pthread_cleanup_context *_context,
|
||||||
|
int _execute));
|
||||||
|
|
||||||
|
/* It is intentional to open and close the scope in two different macros */
|
||||||
|
#define pthread_cleanup_push(_routine, _arg) \
|
||||||
|
do { \
|
||||||
|
struct _pthread_cleanup_context _pthread_clup_ctx; \
|
||||||
|
_pthread_cleanup_push(&_pthread_clup_ctx, (_routine), (_arg))
|
||||||
|
|
||||||
|
#define pthread_cleanup_pop(_execute) \
|
||||||
|
_pthread_cleanup_pop(&_pthread_clup_ctx, (_execute)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#if defined(_GNU_SOURCE)
|
||||||
|
void _EXFUN(_pthread_cleanup_push_defer,
|
||||||
|
(struct _pthread_cleanup_context *_context,
|
||||||
|
void (*_routine)(void *), void *_arg));
|
||||||
|
|
||||||
|
void _EXFUN(_pthread_cleanup_pop_restore,
|
||||||
|
(struct _pthread_cleanup_context *_context,
|
||||||
|
int _execute));
|
||||||
|
|
||||||
|
/* It is intentional to open and close the scope in two different macros */
|
||||||
|
#define pthread_cleanup_push_defer_np(_routine, _arg) \
|
||||||
|
do { \
|
||||||
|
struct _pthread_cleanup_context _pthread_clup_ctx; \
|
||||||
|
_pthread_cleanup_push_defer(&_pthread_clup_ctx, (_routine), (_arg))
|
||||||
|
|
||||||
|
#define pthread_cleanup_pop_restore_np(_execute) \
|
||||||
|
_pthread_cleanup_pop_restore(&_pthread_clup_ctx, (_execute)); \
|
||||||
|
} while (0)
|
||||||
|
#endif /* defined(_GNU_SOURCE) */
|
||||||
|
|
||||||
#if defined(_POSIX_THREAD_CPUTIME)
|
#if defined(_POSIX_THREAD_CPUTIME)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue