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.h38
1 files changed, 11 insertions, 27 deletions
diff --git a/lib/librt/sigev_thread.h b/lib/librt/sigev_thread.h
index 89512f9..7e30c2a 100644
--- a/lib/librt/sigev_thread.h
+++ b/lib/librt/sigev_thread.h
@@ -32,9 +32,8 @@
#include <sys/types.h>
#include <sys/queue.h>
-#include <setjmp.h>
-struct sigev_thread_node;
+struct sigev_thread;
struct sigev_node;
typedef uintptr_t sigev_id_t;
@@ -42,8 +41,6 @@ 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;
@@ -51,51 +48,38 @@ 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;
+ pthread_attr_t sn_attr;
+ struct sigev_thread *sn_tn;
};
-struct sigev_thread_attr {
- int sna_policy;
- int sna_inherit;
- int sna_prio;
- size_t sna_stacksize;
- void *sna_stackaddr;
- size_t sna_guardsize;
-};
-struct sigev_thread_node {
- TAILQ_ENTRY(sigev_thread_node) tn_link;
+struct sigev_thread {
+ LIST_ENTRY(sigev_thread) tn_link;
pthread_t tn_thread;
struct sigev_node *tn_cur;
- struct sigev_thread_attr tn_sna;
int tn_refcount;
long tn_lwpid;
- jmp_buf tn_jbuf;
+ pthread_cond_t tn_cv;
};
#define SNF_WORKING 0x01
#define SNF_REMOVED 0x02
-#define SNF_ONESHOT 0x04
-#define SNF_ACTQ 0x08
-#define SNF_THREADPOOL 0x10
+#define SNF_SYNC 0x04
-#define SIGEV_SIGSERVICE (SIGTHR+1)
+#define SIGSERVICE (SIGTHR+1)
int __sigev_check_init();
struct sigev_node *__sigev_alloc(int, const struct sigevent *,
- struct sigev_node *, int usethreadpool);
+ struct sigev_node *, int);
struct sigev_node *__sigev_find(int, sigev_id_t);
void __sigev_get_sigevent(struct sigev_node *, struct sigevent *,
sigev_id_t);
int __sigev_register(struct sigev_node *);
int __sigev_delete(int, sigev_id_t);
int __sigev_delete_node(struct sigev_node *);
-int __sigev_list_lock(void);
-int __sigev_list_unlock(void);
-int __sigev_thread_list_lock(void);
-int __sigev_thread_list_unlock(void);
+void __sigev_list_lock(void);
+void __sigev_list_unlock(void);
void __sigev_free(struct sigev_node *);
#endif
OpenPOWER on IntegriCloud