diff options
| author | Lou Berger <lberger@labn.net> | 2019-04-30 10:26:35 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-04-30 10:26:35 -0400 |
| commit | 31e944a8a74db137424fc8f3185750b445c58d8f (patch) | |
| tree | d9cccdb70da2a5c7ceb67e5f88427520930f8ed5 /lib/thread.h | |
| parent | 5f4e7ff9e2680fe399ca8e70f20feea9cfd7ec24 (diff) | |
| parent | 8390828dacec2befdd8f71c7d08b17963a8a340a (diff) | |
Merge pull request #3045 from opensourcerouting/atoms
READY: lists/skiplists/rb-trees new API & sequence lock & atomic lists
Diffstat (limited to 'lib/thread.h')
| -rw-r--r-- | lib/thread.h | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/lib/thread.h b/lib/thread.h index ec774a6543..7897265120 100644 --- a/lib/thread.h +++ b/lib/thread.h @@ -26,6 +26,7 @@ #include <poll.h> #include "monotime.h" #include "frratomic.h" +#include "typesafe.h" #ifdef __cplusplus extern "C" { @@ -39,12 +40,7 @@ struct rusage_t { #define GETRUSAGE(X) thread_getrusage(X) -/* Linked list of thread. */ -struct thread_list { - struct thread *head; - struct thread *tail; - int count; -}; +PREDECL_LIST(thread_list) struct pqueue; @@ -78,9 +74,7 @@ struct thread_master { struct thread **read; struct thread **write; struct pqueue *timer; - struct thread_list event; - struct thread_list ready; - struct thread_list unuse; + struct thread_list_head event, ready, unuse; struct list *cancel_req; bool canceled; pthread_cond_t cancel_cond; @@ -100,8 +94,7 @@ struct thread_master { struct thread { uint8_t type; /* thread type */ uint8_t add_type; /* thread type */ - struct thread *next; /* next pointer of the thread */ - struct thread *prev; /* previous pointer of the thread */ + struct thread_list_item threaditem; struct thread **ref; /* external reference (if given) */ struct thread_master *master; /* pointer to the struct thread_master */ int (*func)(struct thread *); /* event function */ |
