Rev 1062 | Rev 1174 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1062 | Rev 1159 | ||
---|---|---|---|
Line 29... | Line 29... | ||
29 | #ifndef __TASK_H__ |
29 | #ifndef __TASK_H__ |
30 | #define __TASK_H__ |
30 | #define __TASK_H__ |
31 | 31 | ||
32 | #include <typedefs.h> |
32 | #include <typedefs.h> |
33 | #include <synch/spinlock.h> |
33 | #include <synch/spinlock.h> |
- | 34 | #include <adt/btree.h> |
|
34 | #include <adt/list.h> |
35 | #include <adt/list.h> |
35 | #include <ipc/ipc.h> |
36 | #include <ipc/ipc.h> |
36 | 37 | ||
37 | /** Task structure. */ |
38 | /** Task structure. */ |
38 | struct task { |
39 | struct task { |
39 | SPINLOCK_DECLARE(lock); |
40 | SPINLOCK_DECLARE(lock); |
40 | char *name; |
41 | char *name; |
41 | link_t th_head; /**< List of threads contained in this task. */ |
42 | link_t th_head; /**< List of threads contained in this task. */ |
42 | link_t tasks_link; /**< Link to other tasks within the system. */ |
- | |
43 | as_t *as; /**< Address space. */ |
43 | as_t *as; /**< Address space. */ |
44 | task_id_t taskid; /**< Unique identity of task */ |
44 | task_id_t taskid; /**< Unique identity of task */ |
45 | 45 | ||
46 | /* IPC stuff */ |
46 | /* IPC stuff */ |
47 | answerbox_t answerbox; /**< Communication endpoint */ |
47 | answerbox_t answerbox; /**< Communication endpoint */ |
48 | phone_t phones[IPC_MAX_PHONES]; |
48 | phone_t phones[IPC_MAX_PHONES]; |
49 | atomic_t active_calls; /**< Active asynchronous messages */ |
49 | atomic_t active_calls; /**< Active asynchronous messages */ |
50 | }; |
50 | }; |
51 | 51 | ||
52 | extern spinlock_t tasks_lock; |
52 | extern spinlock_t tasks_lock; |
53 | extern link_t tasks_head; |
53 | extern btree_t tasks_btree; |
54 | 54 | ||
55 | extern void task_init(void); |
55 | extern void task_init(void); |
56 | extern task_t *task_create(as_t *as, char *name); |
56 | extern task_t *task_create(as_t *as, char *name); |
57 | extern task_t *task_run_program(void *program_addr, char *name); |
57 | extern task_t *task_run_program(void *program_addr, char *name); |
58 | 58 |