Chinaunix首页 | 论坛 | 博客
  • 博客访问: 31198
  • 博文数量: 11
  • 博客积分: 1420
  • 博客等级: 上尉
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-13 11:49
文章分类
文章存档

2011年(1)

2008年(10)

我的朋友

分类: LINUX

2008-04-17 09:26:46

/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)
阅读(706) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~