#include #include #include #include #include MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("hello world module"); #define FILENAME "fortytwo" ssize_t dev_read(struct file *f, char __user *buf, size_t len, loff_t *off); ssize_t dev_write(struct file *f, const char __user *buf, size_t len, loff_t *off); static const struct file_operations fops = { .owner = THIS_MODULE, .read = dev_read, .write = dev_write, }; static struct miscdevice dev = { .minor = MISC_DYNAMIC_MINOR, .name = FILENAME, .fops = &fops, .mode = 0666, }; static int __init fortytwo_init(void) { pr_info("creating fortytwo misc device\n"); return misc_register(&dev); } static void __exit fortytwo_exit(void) { pr_info("removing forytwo misc device\n"); misc_deregister(&dev); } module_init(fortytwo_init); module_exit(fortytwo_exit);