Changeset 9e87562 in mainline for kernel/generic/include/cap/cap.h
- Timestamp:
- 2017-09-18T20:52:12Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6abfd250
- Parents:
- e5f5ce0
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/cap/cap.h
re5f5ce0 r9e87562 38 38 #include <typedefs.h> 39 39 #include <ipc/ipc.h> 40 #include <adt/list.h> 41 #include <synch/mutex.h> 40 42 41 43 #define MAX_CAPS 64 42 43 #define for_each_cap(task, cap, type) \44 for (int i = 0, l = 1; i < MAX_CAPS && l; i++) \45 for (cap_t *(cap) = cap_get((task), i, (type)); \46 (cap) && !(l = 0); (cap) = NULL, l = 1)47 48 #define for_each_cap_current(cap, type) \49 for_each_cap(TASK, (cap), (type))50 44 51 45 typedef enum { … … 53 47 CAP_TYPE_ALLOCATED, 54 48 CAP_TYPE_PHONE, 55 CAP_TYPE_IRQ 49 CAP_TYPE_IRQ, 50 CAP_TYPE_MAX 56 51 } cap_type_t; 57 52 … … 62 57 bool (* can_reclaim)(struct cap *); 63 58 59 /* Link to the task's capabilities of the same type. */ 60 link_t link; 61 64 62 /* The underlying kernel object. */ 65 63 void *kobject; 66 64 } cap_t; 67 65 66 typedef struct cap_info { 67 mutex_t lock; 68 69 list_t type_list[CAP_TYPE_MAX]; 70 71 cap_t *caps; 72 } cap_info_t; 73 68 74 struct task; 69 75 70 void caps_task_alloc(struct task *); 71 void caps_task_free(struct task *); 72 void caps_task_init(struct task *); 76 extern void caps_task_alloc(struct task *); 77 extern void caps_task_free(struct task *); 78 extern void caps_task_init(struct task *); 79 extern bool caps_apply_to_all(struct task *, cap_type_t, 80 bool (*)(cap_t *, void *), void *); 81 extern void caps_lock(struct task *); 82 extern void caps_unlock(struct task *); 73 83 74 84 extern void cap_initialize(cap_t *, int); 75 85 extern cap_t *cap_get(struct task *, int, cap_type_t); 76 extern cap_t *cap_get_current(int, cap_type_t);77 86 extern int cap_alloc(struct task *); 87 extern void cap_publish(struct task *, int, cap_type_t, void *); 88 extern cap_t *cap_unpublish(struct task *, int, cap_type_t); 78 89 extern void cap_free(struct task *, int); 79 90
Note:
See TracChangeset
for help on using the changeset viewer.