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 | ||