처음으로 드라이버 코드를 작성해봤습니다. 커널 모듈의 초기화 함수가 init_module() 또는 module_init() 매크로를 사용하여 지정된 다른 함수라고 명시한 많은 리소스를 확인했습니다. 이 초기화 함수는 커널 모듈이 로드될 때 호출됩니다.
하지만 로드 가능한 커널 모듈에 초기화 함수가 존재하지 않고 이를 로드하려고 하면 어떤 일이 발생하는지에 대한 정보를 찾을 수 없습니다.
커널 모듈이 트리 안에 있고 초기화 기능이 없으면 어떻게 되나요?
- -미리 감사드립니다..
답변1
모듈에는 초기화 기능이 필요하지 않습니다.do_init_module
그것의 부재를 처리하다:
/* Start the module */
if (mod->init != NULL)
ret = do_one_initcall(mod->init);
이러한 모듈은 종료 기능 없이도 언로드될 수 있습니다(초기화 기능이 있는 모듈과 달리 종료 기능이 없으면 영구적임).
모듈이 내장되면 초기화 함수는 __initcall
링크 타임 인식 함수가 됩니다. 모듈이 없어도 문제가 발생하지 않습니다.