- 论坛徽章:
- 6
|
回复 1# comeona1
我一直没有找到这里的read调用了和socket相关的哪个函数
建议看看vfs部分代码。
一最新的内核代码为例(这部分的改动不是很大,除了异步读写这块),流程是这样的:
sys_read---》vfs_read---》file->f_op->read---》sock_aio_read---》do_sock_read---》...
其中关键在网络vfs的建立。
这部分代码在:
net/socket.c
sock_alloc_file---》file->f_op=socket_file_ops....
socket_file_ops的定义如下:
static const struct file_operations socket_file_ops = {
.owner = THIS_MODULE,
.llseek = no_llseek,
.aio_read = sock_aio_read,
.aio_write = sock_aio_write,
.poll = sock_poll,
.unlocked_ioctl = sock_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl = compat_sock_ioctl,
#endif
.mmap = sock_mmap,
.open = sock_no_open, /* special open code to disallow open via /proc */
.release = sock_close,
.fasync = sock_fasync,
.sendpage = sock_sendpage,
.splice_write = generic_splice_sendpage,
.splice_read = sock_splice_read,
};
|
|