반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

꿈꾸는 사람.

[Linux kernel 4.2][Device driver] platform_driver probe 함수 호출 과정. 본문

IT/Linux

[Linux kernel 4.2][Device driver] platform_driver probe 함수 호출 과정.

현무랑 니니 2015. 9. 1. 01:56
반응형




platform_driver probe  함수 호출되는 과정.


platform_driver의 probe 함수가 호출되는 과정을 알아보자.

1. start_kernel()에서 드라이버 초기화 진입 과정.

디바이스 드라이버 호출 과정은 이전 글을 참고하라. => [리눅스 3.16.6] Init call mechanism. 디바이스 드라이버 초기화 호출 체계.

이전 글에 보충할 부분은 다음과 같다.

kernel_thread()가 kernel_init()를 생성하는데 kernel_init()는 /proc/1 프로세스에 해당한다.

init/main.c 파일의 do_one_initcall() 함수에서 fn()를 호출하는데 이 함수는 autheros의 module_init()에 등록된 함수이다.

빌드 후 System.map 파일에서 __initcall_ath9k_init6로 찾을 수 있다.

이것은 ath9k_init()에 해당한다.

ath9k_init()는 platform_driver인 ath_ahb_driver를 platform_driver_register()로 등록한다.

platform_driver_register()는 위 그림처럼 platform_driver ath_ahb_driver의 probe함수를 호출하게 된다.

즉, ath_ahb_probe()는 커널 부팅 후 초기화 과정 중 위와 같이 호출되어 Atheros wifi driver를 초기화 한다.

전체 과정은 첨부 파일을 참고 한다.

 

init_sequence_in_linux_4.2.zip





반응형
Comments