内核为socket入口为sys_socketcall()(但在libc中展示为不同系统调用函数),代码在net/socket.c中
asmlinkage long sys_socketcall(int call, unsigned long *args)
{
....
if( copy_from_user(a,args,nargs[call]))
/*
nargs[] 是一个数组,根据不同的call参数,确定要拷贝的数据长度
*/
return -EFAULT;
....
/*
可处理模式 : SYS_SOCKET SYS_BIND SYS_CONNECT SYS_LISTEN
SYS_ACCEPT SYS_GETSOCKNAME SYS_GETPEERNAME
SYS_SOCKETPAIR SYS_SEND SYS_SENDTO
SYS_RECV SYS_RECVFROM SYS_SHUNDOWN
SYS_SETSOCKOPT SYS_GETSOCKOPT
SYS_SENDMSG SYS_RECVMSG
*/
}
阅读(956) | 评论(0) | 转发(0) |