Multiuser, Capabilities and Access Controls (#54)
[lunaix-os.git] / lunaix-os / kernel / device / potentem.c
1 #include <lunaix/device.h>
2 #include <lunaix/mm/valloc.h>
3
4 struct potens_meta*
5 alloc_potens(int cap, unsigned int size) 
6 {
7     struct potens_meta* cm = (struct potens_meta*)vzalloc(size);
8
9     cm->pot_type = cap;
10
11     return cm;
12 }
13
14 void
15 device_grant_potens(struct device* dev, struct potens_meta* cap)
16 {
17     llist_append(&dev->potentium, &cap->potentes);
18     cap->owner = dev;
19 }
20
21 struct potens_meta*
22 device_get_potens(struct device* dev, unsigned int pot_type)
23 {
24     struct potens_meta *pos, *n;
25
26     llist_for_each(pos, n, &dev->potentium, potentes) {
27         if (pos->pot_type == pot_type){
28             return pos;
29         }
30     }
31
32     return NULL;
33 }