리눅스에서 모든 소켓 관련 시스템 호출은 socketcall이라는 하나의 시스템 호출을 던집니다. 핸들러는 /net/socket.c
에 있습니다. 인수에 copy_from_user가 있고 모든 소켓 기능에 스위치가있을 것으로 기대할 수 있습니다.리눅스 '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)
내 질문입니다. 나는 이전 버전과의 호환성을 위해, 또는 어딘가에 실수가 있다고 생각하십니까?