초기화 기능이 없을 때 커널 모듈이 로드됩니까?

초기화 기능이 없을 때 커널 모듈이 로드됩니까?

처음으로 드라이버 코드를 작성해봤습니다. 커널 모듈의 초기화 함수가 init_module() 또는 module_init() 매크로를 사용하여 지정된 다른 함수라고 명시한 많은 리소스를 확인했습니다. 이 초기화 함수는 커널 모듈이 로드될 때 호출됩니다.

하지만 로드 가능한 커널 모듈에 초기화 함수가 존재하지 않고 이를 로드하려고 하면 어떤 일이 발생하는지에 대한 정보를 찾을 수 없습니다.

커널 모듈이 트리 안에 있고 초기화 기능이 없으면 어떻게 되나요?

- -미리 감사드립니다..

답변1

모듈에는 초기화 기능이 필요하지 않습니다.do_init_module그것의 부재를 처리하다:

        /* Start the module */
        if (mod->init != NULL)
                ret = do_one_initcall(mod->init);

이러한 모듈은 종료 기능 없이도 언로드될 수 있습니다(초기화 기능이 있는 모듈과 달리 종료 기능이 없으면 영구적임).

모듈이 내장되면 초기화 함수는 __initcall링크 타임 인식 함수가 됩니다. 모듈이 없어도 문제가 발생하지 않습니다.

관련 정보