下面对上一节的驱动程序的open和write函数增加了打印信息,使用时可以看到系统的调用。
同时对注册和注销函数也增加了打印信息,使用时可以看到系统的调用。
#include <linux/fs.h> /* 包含file_operation结构体 */
#include <linux/init.h> /* 包含module_init module_exit */
#include <linux/module.h> /* 包含LICENSE的宏 */
/* 定义一个打开设备的,open函数 */
static int first_drv_open(struct inode *inodep, struct file *filep)
{
printk("first_drv_open\n");
return 0;
}
/* 定义一个打开设备的,write函数 */
static ssize_t first_drv_write(struct file *filep, const char __user * buf, size_t len, loff_t *ppos)
{
printk("first_drv_write\n");
return 0;
}
/* 把自己定义的函数接口使用file_operations结构体封装起来,方便管理和使用 */
static const struct file_operations first_drv_file_operation = {
.owner = THIS_MODULE,
.open = first_drv_open,
.write = first_drv_write,
};
/* 注册驱动打包好的驱动程序 */
static int __init first_drv_init(void)
{
register_chrdev(111,"first_drv