📄 simple_device.c
字号:
/* * Written by Der Herr Hofrat, der.herr@hofr.at * (C) 2002 FSMLabs * License: GPL Version 2 */#include <linux/module.h>#include <linux/version.h>#include <linux/init.h>#include <asm/io.h>#include <asm/uaccess.h> #include "device_common.h"static int driver_open(struct inode *inode, struct file *file ){ printk("driver open called\n"); return 0;}static int driver_close(struct inode *inode, struct file *file){ printk("driver close called\n"); return 0;}static ssize_t driver_read(struct file *File, char *buf, size_t count, loff_t *offset){ printk("driver read called\n"); return 0;}static ssize_t driver_write(struct file *File, const char *user, size_t count, loff_t *offset){ printk("driver write called\n"); return 0;}static struct file_operations simple_fops={ THIS_MODULE, /* need this only for 2.4.X kernels */ NULL, /* llseek */ driver_read, /* read */ driver_write, /* write */ NULL, /* readdir */ NULL, /* poll */ NULL, /* ioctl */ NULL, /* mmap */ driver_open, /* open */ NULL, /* flush */ driver_close, /* release */ NULL, /* fsync */ NULL, /* fasync */ NULL, /* lock */};static int __init simple_init(void){ if(register_chrdev(SIMPLE_MAJOR,DEV_NAME, &simple_fops) == 0) { printk("driver for major %d registered successfully\n",SIMPLE_MAJOR); return 0; }; printk("unable to get major %d\n",SIMPLE_MAJOR); return -EIO;}static void __exit simple_exit(void){ unregister_chrdev(SIMPLE_MAJOR,DEV_NAME);}module_init(simple_init);module_exit(simple_exit);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -