- 论坛徽章:
- 0
|
/20080311
1ioctl (网络中 application)
2defined ioctl in include/asm-mips/unistd.h
#define __NR_ioctl (__NR_Linux + 54)
3 implemented in sys_call_table,arch/mips/kernel/scall64-o32.S
sys_call_table:
...
PTR compat_sys_ioctl
...
4 implemented compat_sys_ioctl in linux/fs/compat.c
5 called
compat_sys_ioctl
1.0-->filp = fget_light(fd, &fput_needed);
1.1-->filp->f_op->unlocked_ioctl (socket.c defined,it is sock_ioctl)
1.2-->vfs_ioctl
1.2.1-->do_ioctl (linux/fs/ioctl.c)
1.2.1.1-->filp->f_op->unlocked_ioctl (sock_ioctl)
1.2.1.1.1-->dev_ioctl
sys_socket (kernel process the "socket" function in user level)
1.1-->sock_create
1.2-->sock_map_fd
1.2.1-->get_unused_fd
1.2.2-->get_empty_filp
1.2.3-->sock->file = file
1.2.4-->file->f_op = SOCK_INODE(sock)->i_fop =
&socket_file_ops; (where socket_file_ops.unlocked_ioctl =sock_ioctl)
1.2.5-->fd_install (fdt->fd[fd]=file,this can help us find the file by fd)
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66373/showart_545601.html |
|