Rev 1568 | Rev 1583 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1568 | Rev 1579 | ||
---|---|---|---|
Line 38... | Line 38... | ||
38 | #include <security/cap.h> |
38 | #include <security/cap.h> |
39 | #include <arch/proc/task.h> |
39 | #include <arch/proc/task.h> |
40 | 40 | ||
41 | /** Task structure. */ |
41 | /** Task structure. */ |
42 | struct task { |
42 | struct task { |
- | 43 | /** Task lock. |
|
- | 44 | * |
|
- | 45 | * Must be acquired before threads_lock and thread lock of any of its threads. |
|
- | 46 | */ |
|
43 | SPINLOCK_DECLARE(lock); |
47 | SPINLOCK_DECLARE(lock); |
- | 48 | ||
44 | char *name; |
49 | char *name; |
45 | link_t th_head; /**< List of threads contained in this task. */ |
50 | link_t th_head; /**< List of threads contained in this task. */ |
46 | as_t *as; /**< Address space. */ |
51 | as_t *as; /**< Address space. */ |
47 | task_id_t taskid; /**< Unique identity of task */ |
52 | task_id_t taskid; /**< Unique identity of task */ |
48 | 53 | ||
- | 54 | /** If this is true, new threads can become part of the task. */ |
|
- | 55 | bool accept_new_threads; |
|
- | 56 | ||
- | 57 | count_t refcount; /**< Number of references (i.e. threads). */ |
|
- | 58 | ||
49 | cap_t capabilities; /**< Task capabilities. */ |
59 | cap_t capabilities; /**< Task capabilities. */ |
50 | 60 | ||
51 | /* IPC stuff */ |
61 | /* IPC stuff */ |
52 | answerbox_t answerbox; /**< Communication endpoint */ |
62 | answerbox_t answerbox; /**< Communication endpoint */ |
53 | phone_t phones[IPC_MAX_PHONES]; |
63 | phone_t phones[IPC_MAX_PHONES]; |
Line 68... | Line 78... | ||
68 | extern spinlock_t tasks_lock; |
78 | extern spinlock_t tasks_lock; |
69 | extern btree_t tasks_btree; |
79 | extern btree_t tasks_btree; |
70 | 80 | ||
71 | extern void task_init(void); |
81 | extern void task_init(void); |
72 | extern task_t *task_create(as_t *as, char *name); |
82 | extern task_t *task_create(as_t *as, char *name); |
- | 83 | extern void task_destroy(task_t *t); |
|
73 | extern task_t *task_run_program(void *program_addr, char *name); |
84 | extern task_t *task_run_program(void *program_addr, char *name); |
74 | extern task_t *task_find_by_id(task_id_t id); |
85 | extern task_t *task_find_by_id(task_id_t id); |
- | 86 | extern int task_kill(task_id_t id); |
|
- | 87 | ||
75 | 88 | ||
76 | #ifndef task_create_arch |
89 | #ifndef task_create_arch |
77 | extern void task_create_arch(task_t *t); |
90 | extern void task_create_arch(task_t *t); |
78 | #endif |
91 | #endif |
79 | 92 |