Changeset 3f74275 in mainline for kernel/generic/include/cap/cap.h
- Timestamp:
- 2017-08-20T16:45:01Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e68765e
- Parents:
- e7ac23d0
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/cap/cap.h
re7ac23d0 r3f74275 33 33 */ 34 34 35 #ifndef KERN_ KOBJECT_H_36 #define KERN_ KOBJECT_H_35 #ifndef KERN_CAP_H_ 36 #define KERN_CAP_H_ 37 37 38 38 #include <typedefs.h> … … 40 40 #include <ddi/irq.h> 41 41 42 #define MAX_ KERNEL_OBJECTS 6442 #define MAX_CAPS 64 43 43 44 #define for_each_ kobject(task, ko, type) \45 for (int i = 0, l = 1; i < MAX_ KERNEL_OBJECTS && l; i++) \46 for ( kobject_t *(ko) = kobject_get((task), i, (type)); \47 ( ko) && !(l = 0); (ko) = NULL, l = 1)44 #define for_each_cap(task, cap, type) \ 45 for (int i = 0, l = 1; i < MAX_CAPS && l; i++) \ 46 for (cap_t *(cap) = cap_get((task), i, (type)); \ 47 (cap) && !(l = 0); (cap) = NULL, l = 1) 48 48 49 #define for_each_ kobject_current(ko, type) \50 for_each_ kobject(TASK, (ko), (type))49 #define for_each_cap_current(cap, type) \ 50 for_each_cap(TASK, (cap), (type)) 51 51 52 52 typedef enum { 53 KOBJECT_TYPE_INVALID,54 KOBJECT_TYPE_ALLOCATED,55 KOBJECT_TYPE_PHONE,56 KOBJECT_TYPE_IRQ57 } kobject_type_t;53 CAP_TYPE_INVALID, 54 CAP_TYPE_ALLOCATED, 55 CAP_TYPE_PHONE, 56 CAP_TYPE_IRQ 57 } cap_type_t; 58 58 59 typedef struct kobject{60 kobject_type_t type;61 bool (* can_reclaim)(struct kobject*);59 typedef struct cap { 60 cap_type_t type; 61 bool (* can_reclaim)(struct cap *); 62 62 63 /* The underlying kernel object. */ 63 64 union { 64 65 phone_t phone; 65 66 irq_t irq; 66 67 }; 67 } kobject_t;68 } cap_t; 68 69 69 70 struct task; 70 71 71 void kobject_task_alloc(struct task *);72 void kobject_task_free(struct task *);73 void kobject_task_init(struct task *);72 void caps_task_alloc(struct task *); 73 void caps_task_free(struct task *); 74 void caps_task_init(struct task *); 74 75 75 extern void kobject_initialize(kobject_t *);76 extern kobject_t *kobject_get(struct task *, int, kobject_type_t);77 extern kobject_t *kobject_get_current(int, kobject_type_t);78 extern int kobject_alloc(struct task *);79 extern void kobject_free(struct task *, int);76 extern void cap_initialize(cap_t *); 77 extern cap_t *cap_get(struct task *, int, cap_type_t); 78 extern cap_t *cap_get_current(int, cap_type_t); 79 extern int cap_alloc(struct task *); 80 extern void cap_free(struct task *, int); 80 81 81 extern int kobject_to_cap(struct task *, kobject_t *);82 extern int cap_get_handle(struct task *, cap_t *); 82 83 83 84 #endif
Note:
See TracChangeset
for help on using the changeset viewer.