Rev 1156 | Rev 1171 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1156 | Rev 1158 | ||
---|---|---|---|
Line 36... | Line 36... | ||
36 | #include <arch/types.h> |
36 | #include <arch/types.h> |
37 | #include <typedefs.h> |
37 | #include <typedefs.h> |
38 | #include <time/timeout.h> |
38 | #include <time/timeout.h> |
39 | #include <synch/rwlock.h> |
39 | #include <synch/rwlock.h> |
40 | #include <config.h> |
40 | #include <config.h> |
- | 41 | #include <adt/btree.h> |
|
41 | #include <adt/list.h> |
42 | #include <adt/list.h> |
42 | #include <mm/slab.h> |
43 | #include <mm/slab.h> |
43 | #include <proc/uarg.h> |
44 | #include <proc/uarg.h> |
44 | 45 | ||
45 | #define THREAD_STACK_SIZE STACK_SIZE |
46 | #define THREAD_STACK_SIZE STACK_SIZE |
Line 63... | Line 64... | ||
63 | /** Thread structure. There is one per thread. */ |
64 | /** Thread structure. There is one per thread. */ |
64 | struct thread { |
65 | struct thread { |
65 | link_t rq_link; /**< Run queue link. */ |
66 | link_t rq_link; /**< Run queue link. */ |
66 | link_t wq_link; /**< Wait queue link. */ |
67 | link_t wq_link; /**< Wait queue link. */ |
67 | link_t th_link; /**< Links to threads within containing task. */ |
68 | link_t th_link; /**< Links to threads within containing task. */ |
68 | link_t threads_link; /**< Link to the list of all threads. */ |
- | |
69 | 69 | ||
70 | /** Lock protecting thread structure. |
70 | /** Lock protecting thread structure. |
71 | * |
71 | * |
72 | * Protects the whole thread structure except list links above. |
72 | * Protects the whole thread structure except list links above. |
73 | * Must be acquired before T.lock for each T of type task_t. |
73 | * Must be acquired before T.lock for each T of type task_t. |
Line 128... | Line 128... | ||
128 | * Must be acquired before T.lock for each T of type thread_t. |
128 | * Must be acquired before T.lock for each T of type thread_t. |
129 | * |
129 | * |
130 | */ |
130 | */ |
131 | extern spinlock_t threads_lock; |
131 | extern spinlock_t threads_lock; |
132 | 132 | ||
133 | extern link_t threads_head; /**< List of all threads in the system. */ |
133 | extern btree_t threads_btree; /**< B+tree containing all threads. */ |
134 | 134 | ||
135 | extern void thread_init(void); |
135 | extern void thread_init(void); |
136 | extern thread_t *thread_create(void (* func)(void *), void *arg, task_t *task, int flags, char *name); |
136 | extern thread_t *thread_create(void (* func)(void *), void *arg, task_t *task, int flags, char *name); |
137 | extern void thread_ready(thread_t *t); |
137 | extern void thread_ready(thread_t *t); |
138 | extern void thread_exit(void); |
138 | extern void thread_exit(void); |
Line 141... | Line 141... | ||
141 | extern void thread_usleep(__u32 usec); |
141 | extern void thread_usleep(__u32 usec); |
142 | 142 | ||
143 | extern void thread_register_call_me(void (* call_me)(void *), void *call_me_with); |
143 | extern void thread_register_call_me(void (* call_me)(void *), void *call_me_with); |
144 | extern void thread_print_list(void); |
144 | extern void thread_print_list(void); |
145 | extern void thread_destroy(thread_t *t); |
145 | extern void thread_destroy(thread_t *t); |
- | 146 | extern bool thread_exists(thread_t *t); |
|
146 | 147 | ||
147 | /* Fpu context slab cache */ |
148 | /* Fpu context slab cache */ |
148 | extern slab_cache_t *fpu_context_slab; |
149 | extern slab_cache_t *fpu_context_slab; |
149 | 150 | ||
150 | /** Thread syscall prototypes. */ |
151 | /** Thread syscall prototypes. */ |