summaryrefslogtreecommitdiffstats
path: root/lib/librt/sigev_thread.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/librt/sigev_thread.h')
-rw-r--r--lib/librt/sigev_thread.h15
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);
OpenPOWER on IntegriCloud