diff options
Diffstat (limited to 'lib/librt/sigev_thread.h')
-rw-r--r-- | lib/librt/sigev_thread.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/librt/sigev_thread.h b/lib/librt/sigev_thread.h index 998af17..89512f9 100644 --- a/lib/librt/sigev_thread.h +++ b/lib/librt/sigev_thread.h @@ -38,11 +38,12 @@ struct sigev_thread_node; struct sigev_node; typedef uintptr_t sigev_id_t; -typedef void (*sigev_dispatch_t)(struct sigev_node *, siginfo_t *); +typedef void (*sigev_dispatch_t)(struct sigev_node *); struct sigev_node { LIST_ENTRY(sigev_node) sn_link; LIST_ENTRY(sigev_node) sn_allist; + TAILQ_ENTRY(sigev_node) sn_actq; int sn_type; sigev_id_t sn_id; sigev_dispatch_t sn_dispatch; @@ -50,6 +51,8 @@ struct sigev_node { void *sn_func; int sn_flags; int sn_gen; + int sn_usethreadpool; + siginfo_t sn_info; struct sigev_thread_node * sn_tn; }; @@ -57,7 +60,6 @@ struct sigev_thread_attr { int sna_policy; int sna_inherit; int sna_prio; - int sna_scope; size_t sna_stacksize; void *sna_stackaddr; size_t sna_guardsize; @@ -68,19 +70,22 @@ struct sigev_thread_node { pthread_t tn_thread; struct sigev_node *tn_cur; struct sigev_thread_attr tn_sna; + int tn_refcount; long tn_lwpid; - pthread_cond_t tn_cv; jmp_buf tn_jbuf; }; #define SNF_WORKING 0x01 #define SNF_REMOVED 0x02 -#define SNF_ONESHOT 0x04 +#define SNF_ONESHOT 0x04 +#define SNF_ACTQ 0x08 +#define SNF_THREADPOOL 0x10 #define SIGEV_SIGSERVICE (SIGTHR+1) int __sigev_check_init(); -struct sigev_node *__sigev_alloc(int, const struct sigevent *); +struct sigev_node *__sigev_alloc(int, const struct sigevent *, + struct sigev_node *, int usethreadpool); struct sigev_node *__sigev_find(int, sigev_id_t); void __sigev_get_sigevent(struct sigev_node *, struct sigevent *, sigev_id_t); |