#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#inlcude <linux/fs.h> //file_operation
#include <linux/miscdevice.h> //混设备头文件
#define DEVNAME "test" //注册的设备名
struct ccj{
struct miscdevice dev;
struct file_operations fops; //file_operations
}
static struct ccj ldm;
static long ldm_ioctl(struct file *fp, unsigned int req, unsigned long date)
{
return 0;
}
static int test_init(void)
{
int ret = 0;
ldm.dev.minor = MISC_DYNAMIC_MINOR; //由驱动框架自动分配一个次设备号
ldm.dev.name = DEVNAME;
ldm.dev.fops = &ldm.fops;
ldm.fops.unlock_ioctl = ldm_ioctl;
ret = misc_register(&ldm.dev); //注册
return 0;
}
static void test_exit(void)
{
misc_deregister(&ldm.dev); //注销
}
module_init(test_init)
module_exit(test_exit)
MODULE_LICENSE("GPL")