What are the ways to communicate with a kernel module from user space? By communication i mean sending information and commands between the kernel module and a user space pr
debugfs is another good possibility for APIs that are less stable than sysfs, but the API is basically the same. Here is a minimal runnable example.
configfs is another one. It allows easy dynamic creation of kernel objects from userspace through the filesystem: https://www.kernel.org/doc/Documentation/filesystems/configfs/configfs.txt
In any case, you will have to dirty some namespace... a filesystem entry in case of sysfs and debugfs. Just choose your poison.
Also, udev
rules make /dev
very similar to sysfs and debugfs: How to create a device in /dev automatically upon loading of the kernel module for a device driver?