시스템 콜 함수의 소스코드를 보고싶습니다..

hanna의 이미지

sendto 함수가 실제로 어떻게 구현되어 있나 보려고 glibc-2.3 소스크드를 풀어서 sendto.c 파일을 열어밨습니다.. 이렇게 되어 있던데..
알맹이는 어디있죠? 제가 삽질을 하고 있는것인가요?

ssize_t
__sendto (fd, buf, n, flags, addr, addr_len)
     int fd;
     __const __ptr_t buf;
     size_t n;
     int flags;
     __CONST_SOCKADDR_ARG addr;
     socklen_t addr_len;
{
  __set_errno (ENOSYS);
  return -1;
}

weak_alias (__sendto, sendto)

stub_warning (sendto)
#include <stub-tag.h>
jaeswith의 이미지

아마...

리눅스 kernel 의
net/socket.c
를 참조하시면 좋을거 같네요.

socket 관련 시스템 콜을 처리하는 부분이니까요.
마지막 부분에 보면, syscall 을 어떻게 socket의 세세한 fn 으로 fetch하는지 볼 수 있습니다.

그리고 그것이 실제 protocol-specific 한 operation 으로 바뀌고요.
inet 같은 경우에는

socket.c -> net/ipv4/af_inet.c -> net/ipv4/tcp.c
정도가 될거 같네요.

as simple as possible
Jae-wan Jang
http://camars.kaist.ac.kr/~jwjang

mastercho의 이미지

스티븐스 책의 일러스트레이트 볼륨2권에 소켓에 관한 시스템 콜 소스가

나와 있습니다

참고하세요

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스