3
在linux中,所有與套接字相關的系統調用都被gated拋出一個名爲socketcall的系統調用。它的處理函數在/net/socket.c
中找到。正如人們可以預料的那樣,有一個用於參數的copy_from_user,然後是所有套接字函數的開關。Linux'socketcall'系統調用實現
我希望在每種情況下都能看到一個普通函數的調用,但似乎有對另一個系統調用的調用。例如,對於「插座」的情況:
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)
我的問題是,爲什麼它是這樣定義的。我猜它是爲了向後兼容,還是我在某個地方有錯誤?