userspace fun: maze game and a new device to support it
[lunaix-os.git] / lunaix-os / kernel / device / capability.c
1 #include <lunaix/device.h>
2 #include <lunaix/mm/valloc.h>
3
4 struct capability_meta*
5 alloc_capability(int cap, unsigned int size) 
6 {
7     struct capability_meta* cm = (struct capability_meta*)vzalloc(size);
8
9     cm->cap_type = cap;
10
11     return cm;
12 }
13
14 void
15 device_grant_capability(struct device* dev, struct capability_meta* cap)
16 {
17     llist_append(&dev->capabilities, &cap->caps);
18 }
19
20 struct capability_meta*
21 device_get_capability(struct device* dev, unsigned int cap_type)
22 {
23     struct capability_meta *pos, *n;
24
25     llist_for_each(pos, n, &dev->capabilities, caps) {
26         if (pos->cap_type == cap_type){
27             return pos;
28         }
29     }
30
31     return NULL;
32 }