simple_device.c

来自「fsmlabs的real time linux的内核」· C语言 代码 · 共 84 行

C
84
字号
/* * 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 + =
减小字号Ctrl + -
显示快捷键?