英文原文是https://lwn.net/Articles/170954/,其描述了vectored operations。这里在原文中间加上了与之对应的内核代码的分析。
The file_operations structure contains pointers to the basic I/O operations exported by filesystems and char device drivers. This structure currently contains three different methods for performing a read operation:
ssize_t (*read) (struct file *filp, char __user *buffer, size_t size,
loff_t *pos);
ssize_t (*readv) (struct file *filp, const struct iovec *iov,
unsigned long niov, loff_t *pos);
ssize_t (*aio_read) (struct kiocb *iocb, char __user *buffer,
size_t size, loff_t pos);