네트워크 디바이스 드라이버의 초기화에 관한 질문입니다.
글쓴이: blue39 / 작성시간: 금, 2003/12/26 - 11:31오전
안녕하세요~~
한참 디바이스 드라이버를 공부하는 중입니다. 말 책도 보고 실제 소스도 보면서
분석 중인데요. 다름이 아니고 커널이 시작되면서 각 부분에 대한 초기화를 수행
하잖아요. 각 네트워크 디바이스 들에 대한 초기화가 이루어지는 부분이 정확히
어디일까요.. 보다보니 너무 궁금하더라구요. Space.c에서 각 장치의 probe함
수를 호출하는건 알겠는데 그 이전에 Space.c가 호출되는 부분이 궁금하더라구요
그리고 이런 네트워크 디바이스 드라이버에 대한 초기화와 수신 시 sk_buf에
들어가는 데이터의 위치들에 대한 정보를 참조할 만한 자료가 있으면 소개 좀
시켜주세요.
그럼 추운 날 감기 조심하시구요
Forums:
음...
정확히는 모르겠으나 리눅스 시스템이 부팅되면서 초기화 될 때,
CPU 점검이 끝나면 바로 기타 PCI버스를 검색하고 초기화 하는걸로
알고 있는데요. 한마디로 시스템과 호환이 되는지 안되는지 확인하는
과정이 끝나고 TCP/IP 부분이 초기화 되는걸로 알고 있습니다.
또한 다음으로 시스템의 파티션 테이블을 점검하는 과정이 끝난후에
네트워크 장치의 초기화 부분이 진행된다고 알고 있습니다.
아마 파일 이름이 tulip.c 인가? 머였던거 같은데요. 기억이 가물가물
하네요. ㅡ,.ㅡ; 죄송합니다.
dmesg 출력결과를 유심히 보시면 될꺼 같습니다. 도움 못드려서 죄송~
H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!
가상 드라이버 (인터미디어트 스택)을 말하는 거겠죠?저도 한창 그부분
가상 드라이버 (인터미디어트 스택)을 말하는 거겠죠?
저도 한창 그부분 쳐다(만 ??) 보고 있는데, 쉽지가 안네요.
IP레이어 아래 윗쪽을 보시려면 Harald Welte이 "The journey of a packet through the linux 2.4 network stack"을 보시면 도움될 것 같습니다.
원래 글 쓴 의도는 netfilter관련 모듈 때문에 쓴거지만 스택에서 호출되는 함수를 순서대로 나열해노았네요.
그리고 TCP/IP Illustated v II 보시면 도움 될겁니다.
물론 인터럽트에 대한 이해도 필수 입니다.
피상적인 답만 했는지 모르겠군요.
Do you think that's the air you are breathing now?
Re: 네트워크 디바이스 드라이버의 초기화에 관한 질문입니다.
Space.c 에서는 디바이스의 테이블 엔트리만을 만들고 실제로 초기화가 이루어지는 곳은, net/core/dev.c 의 net_dev_init() 함수 입니다.
net_dev_init() 함수는 register_netdevice() 에서 호출되는데 static 변수 dev_boot_phase를 사용해서 맨 처음 네트웍 디바이스가 초기화될때만 한번 호출되게 되어있죠.
댓글 달기