Changeset c46bfbc in mainline
- Timestamp:
- 2017-10-10T15:34:37Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 33f86a3
- Parents:
- cccd60c3
- Location:
- kernel/generic
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/cap/cap.h
rcccd60c3 rc46bfbc 111 111 } cap_info_t; 112 112 113 extern voidcaps_task_alloc(struct task *);113 extern int caps_task_alloc(struct task *); 114 114 extern void caps_task_free(struct task *); 115 115 extern void caps_task_init(struct task *); -
kernel/generic/src/cap/cap.c
rcccd60c3 rc46bfbc 114 114 * @param task Task for which to allocate the info structure. 115 115 */ 116 void caps_task_alloc(task_t *task) 117 { 118 task->cap_info = (cap_info_t *) malloc(sizeof(cap_info_t), 0); 116 int caps_task_alloc(task_t *task) 117 { 118 task->cap_info = (cap_info_t *) malloc(sizeof(cap_info_t), 119 FRAME_ATOMIC); 120 if (!task->cap_info) 121 return ENOMEM; 119 122 task->cap_info->handles = ra_arena_create(); 120 // FIXME: allow caps_task_alloc() to fail 121 assert(task->cap_info->handles); 122 bool success = ra_span_add(task->cap_info->handles, 0, MAX_CAPS); 123 // FIXME: allow caps_task_alloc() to fail 124 assert(success); 125 success = hash_table_create(&task->cap_info->caps, 0, 0, &caps_ops); 126 // FIXME: allow caps_task_alloc() to fail 127 assert(success); 123 if (!task->cap_info->handles) 124 goto error_handles; 125 if (!ra_span_add(task->cap_info->handles, 0, MAX_CAPS)) 126 goto error_span; 127 if (!hash_table_create(&task->cap_info->caps, 0, 0, &caps_ops)) 128 goto error_span; 129 return EOK; 130 131 error_span: 132 ra_arena_destroy(task->cap_info->handles); 133 error_handles: 134 free(task->cap_info); 135 return ENOMEM; 128 136 } 129 137 -
kernel/generic/src/proc/task.c
rcccd60c3 rc46bfbc 161 161 { 162 162 task_t *task = (task_t *) obj; 163 164 int rc = caps_task_alloc(task); 165 if (rc != EOK) 166 return rc; 163 167 164 168 atomic_set(&task->refcount, 0); … … 168 172 169 173 list_initialize(&task->threads); 170 171 caps_task_alloc(task);172 174 173 175 ipc_answerbox_init(&task->answerbox, task);
Note:
See TracChangeset
for help on using the changeset viewer.