ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
用于从设备检索数据。此位置的空指针会导致读取系统调用失败并显示-EINVAL(“无效参数”)。非负返回值表示成功读取的字节数(返回值是“有符号大小”类型,通常是目标平台的本机整数类型)。
ssize_t (*aio_read)(struct kiocb *, char __user *, size_t,loff_t);
启动异步读取——在函数返回之前可能无法完成的读取操作。如果此方法为NULL,则所有操作都将由read 处理(同步)。
ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
向设备发送数据。如果为 NULL,则将 -EINVAL 返回给调用 write 系统调用的程序。如果返回值非负,则表示成功写入的字节数。
ssize_t (*aio_write)(struct kiocb *, const char __user *, size_t, loff_t *);
在设备上启动异步写入操作。
从 LDD3 得到这个声明,谁能解释如果设备驱动程序没有实现异步写入功能会发生什么?会,它会像 asyn read 一样升级为静默同步(如果它为 NULL)。