在Linux中,所有与套接字相关的系统调用都通过一个名为socketcall的系统调用进行门控。它的处理程序可以在
我原本期望在每种情况下都会调用普通函数,但似乎有其他系统调用的调用。例如,“socket”的情况:
我的问题是为什么它被定义成这样。我猜这是为了向后兼容性,或者我犯了某个错误?
/net/socket.c
中找到。正如人们所期望的那样,这里有一个复制来自用户的参数的函数,然后是一个用于所有套接字函数的开关语句。我原本期望在每种情况下都会调用普通函数,但似乎有其他系统调用的调用。例如,“socket”的情况:
case SYS_SOCKET:
err = sys_socket(a0, a1, a[2]);
break;
sys_socket也在/net/socket.c
中定义:
SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)
我的问题是为什么它被定义成这样。我猜这是为了向后兼容性,或者我犯了某个错误?