例如:
/*定义设备read接口函数*/
static ssize_t mydriver_read(struct file *filp, char *buf, size_t size, loff_t *offp)
{
if(size> 8192) size = 8192;
/* copy_to_user()*/
/*copy kernel space to user space. */
/*把数据从内核复制到用户空间的代码,可以根据实际添加*/
return size; /*返回字节数*/
}
/*定义设备的file_operations*/
static struct file_operations mydriver_fops =
{
owner: THIS_MODULE,
open: mydriver_open,
release: mydriver_release,
read: mydriver_read,
write: mydriver_write,
ioctl: mydriver_ioctl,
poll: mydriver_poll,
};
mydriver_read函数中的参数值是用户层调用read函数传过来的吗?
|
是的,但是内核经过了一些转换和包装在传递给mydriver_read的!
比如: fd -> struct file *filp
good luck!
|
fx_ent->read_proc 和 fx_ent->write_proc 是函数指针来的。
在这里不是调用,而是把 fx_proc_read 和 fx_proc_write 的地址传给他们而已。