字符设备驱动接口——read、write
程序员文章站
2022-03-22 20:51:16
...
应用层read函数调用内核驱动中file_operations结构体里面的read函数接口
应用层write函数调用内核驱动中file_operations结构体里面的write函数接口
ssize_t read(int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);
ssize_t (*read) (struct file *filp, char __user *buf, size_t size, loff_t *off);
ssize_t (*write) (struct file *filp, const char __user *buf, size_t size, loff_t *off);
ssize_t demo_read(struct file *filp, char __user *buf, size_t size, loff_t *off)
{
printk(KERN_INFO "---buf:%#x,size:%d---\n",buf,size);
printk(KERN_DEBUG "---%s---%s---%d---\n",__FILE__,__func__,__LINE__);
return 0;
}
ssize_t demo_write(struct file *filp, const char __user *buf, size_t size, loff_t *off)
{
printk(KERN_INFO "---buf:%#x,size:%d---\n",buf,size);
printk(KERN_DEBUG "---%s---%s---%d---\n",__FILE__,__func__,__LINE__);
return 0;
}
int copy_to_user(void __user *to, const void *from, int n);
功能:从内核层拷贝数据到用户层
参数:
@to 用户层数据缓存区地址
@from 内核层数据缓存区地址
@n 拷贝的字节数
返回值:成功返回0,失败返回错误码
int copy_from_user(void *to, const void __user *from, int n);
功能:从用户层拷贝数据到内核层
参数:
@to 内核层数据缓存区地址
@from 用户层数据缓存区地址
@n 拷贝的字节数
返回值:成功返回0,失败返回错误码
上一篇: open系统调用
下一篇: javascript如何查询数组长度