X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/7b8a1bcad75628f9add4590db2bb9b8e418ee8eb..0765e7c133eb393d8cd0292af444543c2edf8ccc:/lunaix-os/kernel/device/capability.c diff --git a/lunaix-os/kernel/device/capability.c b/lunaix-os/kernel/device/capability.c new file mode 100644 index 0000000..b31f914 --- /dev/null +++ b/lunaix-os/kernel/device/capability.c @@ -0,0 +1,32 @@ +#include +#include + +struct capability_meta* +alloc_capability(int cap, unsigned int size) +{ + struct capability_meta* cm = (struct capability_meta*)vzalloc(size); + + cm->cap_type = cap; + + return cm; +} + +void +device_grant_capability(struct device* dev, struct capability_meta* cap) +{ + llist_append(&dev->capabilities, &cap->caps); +} + +struct capability_meta* +device_get_capability(struct device* dev, unsigned int cap_type) +{ + struct capability_meta *pos, *n; + + llist_for_each(pos, n, &dev->capabilities, caps) { + if (pos->cap_type == cap_type){ + return pos; + } + } + + return NULL; +} \ No newline at end of file