TODO: - fix user/kernel pointer mess in the ioctl handlers as pointed out by sparse. - resolve the ioctls and see if most of them can just be simple sysfs files - fix locking issues that sparse points out at the least.