It doesn't strive to be a complete implementation.
If users send patches support for them, new syscalls can be added.
Or downstream users can keep those definitions in their own program.
More complex features like threads are out of scope.
Also it should be trivial to run this as an out-of-tree module until it's merged.
With DKMS or put hid_bl.c into an empty directory and add the following makefile:
```
ifneq ($(KERNELRELEASE),)
# kbuild part of makefile
obj-m := hid_bl.o
else
# normal makefile
KDIR ?= /lib/modules/`uname -r`/build