diff --git a/code/lkm.c b/code/lkm.c index 27b1d9db4..cb9563848 100644 --- a/code/lkm.c +++ b/code/lkm.c @@ -4,23 +4,64 @@ #include #include +#define DEVICE_NAME "lkm" + +static int lkm_init(void); +static int lkm_exit(void); +int lkm_open(struct inode *, struct file *); +int lkm_release(struct inode *, struct file *); +long lkm_ioctl(struct file *, unsigned int, long unsigend int); + +module_init(lkm_init); +module_exit(lkm_exit); + +static struct file_operations lkm_fops = { + .owner = "", + .open = lkm_open, + .release = lkm_release, + .unlocked_ioctl = lkm_ioctl, +}; + MODULE_AUTHOR("Mira Chacku Purakal"); MODULE_DESCRIPTION("Generic Module"); MODULE_VERSION("0.1"); MODULE_LICENSE("GPL"); static int -mod_init(void) +lkm_init(void) { - printk(KERN_INFO "module init"); + int ret; + printk(KERN_INFO "lkm: init: start"); + + ret = register_chrdev(0, DEVICE_NAME, &lkm_fops); + if (ret < 0) { + printk(KERN_ERR "lkm: init: register chrdev failed"); + return ret; + } + return 0; } static void -mod_exit(void) +lkm_exit(void) { - printk(KERN_INFO "module exit"); + printk(KERN_INFO "lkm: exit: start"); } -module_init(mod_init); -module_exit(mod_exit); +int +lkm_open(struct inode *inode, struct file *fp) +{ + printk(KERN_INFO "lkm: open: start") +} + +int +lkm_release(struct inode *inode, struct file *fp) +{ + printk(KERN_INFO "lkm: release: start") +} + +long +lkm_ioctl(struct file *fp, unsigned int num, long unsigned int param) +{ + printk(KERN_INFO "lkm: release: start") +} diff --git a/flake.nix b/flake.nix index 66425d179..0fc49f32c 100644 --- a/flake.nix +++ b/flake.nix @@ -24,7 +24,6 @@ gnumake clang-tools gcc - linuxHeaders texlab texliveFull flex