Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

11105
637
415734


[부록 1] GCC 지시어: unused 부록

GCC 컴파일러는 특정 함수를 호출하는 코드가 없을 때 함수를 호출한 적이 없다는 경고 에러 메시지를 출력합니다. 그래서 함수 선언부에 unused 키워드를 붙히면 GCC 컴파일러에게 다음과 같이 컴파일 해달라고 알려줍니다. 

    함수가 호출되지 않는 듯 보여도 커널이 해당 함수를 사용한다. 

이해를 돕기 위해 관련 코드를 소개합니다.

https://elixir.bootlin.com/linux/v4.19.30/source/arch/arm/mach-omap2/pm.c 
int __maybe_unused omap_pm_nop_init(void)
{
return 0;
}

omap_pm_nop_init() 함수는 어디 코드에서도 호출하지 않지만 omap_pm_nop_init() 함수에 __maybe_unused 키워드를 붙히면 컴파일러는 경고 메시지를 출력하지 않습니다.

이 밖에도 함수 선언부에 unused 키워드를 적용하는 이유는 다음과 같습니다.
어셈블리 코드에서 C 코드로 구현된 함수를 호출할 때
함수에 전달된 인자를 받아서 해당 인자를 쓰지 않을 때

"혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!" 

Thanks,
Austin Kim(austindh.kim@gmail.com)


[부록 A] GCC 지시어
   * inline    
   * noinline    
   * __noreturn   
   * unused   
[부록 B] 리눅스 커널 실력을 키우는 방법
[부록 C] 리눅스 커널 프로젝트에 기여하기  
C.1 리눅스 커널 오픈소스 프로젝트 소개 
   * 용어  
C.2 설정 방법 
C.3 패치 코드를 작성한 후 이메일로 보내기  
C.5 리눅스 커널 오픈소스 프로젝트로 얻는 지식 


# Reference: For more information on 'Linux Kernel';

디버깅을 통해 배우는 리눅스 커널의 구조와 원리. 1

디버깅을 통해 배우는 리눅스 커널의 구조와 원리. 2


 


핑백

덧글

댓글 입력 영역