Changeset ce732e74 in mainline for kernel/generic/src/cap/cap.c
- 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
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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 }
Note:
See TracChangeset
for help on using the changeset viewer.