Changeset ce732e74 in mainline
- Timestamp:
- 2017-10-12T17:59:31Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d51838f
- Parents:
- d29ae35
- Location:
- kernel/generic
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/cap/cap.h
rd29ae35 rce732e74 111 111 } cap_info_t; 112 112 113 extern void caps_init(void); 113 114 extern int caps_task_alloc(struct task *); 114 115 extern void caps_task_free(struct task *); -
kernel/generic/src/cap/cap.c
rd29ae35 rce732e74 83 83 #define MAX_CAPS INT_MAX 84 84 85 static slab_cache_t *cap_slab; 86 85 87 static kobject_t *cap_unpublish_locked(task_t *, cap_handle_t, kobject_type_t); 86 88 … … 109 111 .key_equal = caps_key_equal 110 112 }; 113 114 void caps_init(void) 115 { 116 cap_slab = slab_cache_create("cap_t", sizeof(cap_t), 0, NULL, 117 NULL, 0); 118 } 111 119 112 120 /** Allocate the capability info structure … … 267 275 */ 268 276 if (!cap) { 269 cap = malloc(sizeof(cap_t), 0);277 cap = slab_alloc(cap_slab, FRAME_ATOMIC); 270 278 if (!cap) { 271 279 mutex_unlock(&task->cap_info->lock); … … 274 282 uintptr_t hbase; 275 283 if (!ra_alloc(task->cap_info->handles, 1, 1, &hbase)) { 276 free(cap);284 slab_free(cap_slab, cap); 277 285 mutex_unlock(&task->cap_info->lock); 278 286 return ENOMEM; … … 370 378 hash_table_remove_item(&task->cap_info->caps, &cap->caps_link); 371 379 ra_free(task->cap_info->handles, handle, 1); 372 free(cap);380 slab_free(cap_slab, cap); 373 381 mutex_unlock(&task->cap_info->lock); 374 382 } -
kernel/generic/src/main/main.c
rd29ae35 rce732e74 92 92 #include <sysinfo/stats.h> 93 93 #include <lib/ra.h> 94 #include <cap/cap.h> 94 95 95 96 /* Ensure [u]int*_t types are of correct size. … … 277 278 timeout_init(); 278 279 scheduler_init(); 280 caps_init(); 279 281 task_init(); 280 282 thread_init();
Note:
See TracChangeset
for help on using the changeset viewer.