22018, 1/1101 회원가입  로그인  
   pkdo1030
   http://h00ker.tistory.com
   리눅스 헤더파일에 관해

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=35328 [복사]


커널 분석하면서 모르는 헤더파일들이 잔뜩 나와서 찾아보는데 애먹고있습니다. 어떤 헤더파일을 include 시키면 어떠한 함수를 쓸 수 있는지
구글에 그 헤더파일에 대해 검색해봐도 국내자료는 없고 해외자료 들쑤셔도 소스코드정도밖에 안나오네요;; 좀 도와주셨으면 합니다.

  Hit : 8964     Date : 2017/08/22 03:25



    
김답변 도와드리려면 어떤 헤더파일들을 모르시는지, 그 헤더파일을 인클루드시켜서 어떠한 함수를 쓰고 싶으신지를 같이 써주셔야 조금이라도 도와드릴수 있긴한데
http://elixir.free-electrons.com/linux/latest/source
여기가 커널소스 검색하기엔 제일 유명하고 좋은 사이트입니다 헤더파일 링크는 없지만 굳이 헤더파일이 아니라 함수 구현을 보고싶으신거라면 함수는 다 링크돼있습니다. 그 함수가 정의된 헤더파일도요
2017/08/22  
pkdo1030 일단 현재 분석하고있는 misc.c에 인클루드된 asm/uaccess.h 와 asm/addrspace.h 입니다 2017/08/22  
pkdo1030 한가지 더 여쭙고싶은데, 대문자 S가 뒤에오는 확장자는 뭔가요?
어셈블리어로 짜져있는거같은데 .global 이런 영역같은 단어가 써있더군요 중간중간에 .text 이런식으로요
2017/08/22  
김답변 .S, .s 파일들은 어셈블리어 파일들입니다
완전히 어셈블리어는 아니고 컴파일러에서 지원하는 문법에 따라 작성된 어셈블리어 프로그램인데
.global ~~~ 은 이 심볼을 다른 파일에서 사용 가능하게 하겠다(헤더파일 개념), .text는 이 아래 나오는 코드 혹은 데이터는 텍스트 섹션에 들어가야 한다. 이런 의미들입니다

글의 첫 질문이 헷갈려서 헷갈리는 두가지 다 답변을 해보자면
1. 소스코드정도밖에 안나온다 -> 그 헤더파일을 사용하는 .c 파일밖에 찾을수 없다
찾고계시는 헤더파일들은 arch/[아키텍쳐]/include/asm/ 에 있습니다
-> 이거는 그냥 uaccess.h 와 addrspace.h 를 검색해보면 임의의 커널버젼의 임의의 아키텍쳐에 대한 헤더파일 경로들이 나옵니다. 그걸 보시고 원하시는 커널버젼과 아키텍쳐에서 찾아보시면 됩니다

2. 헤더파일 자체에 대한 문서를 찾아보고 싶다, 즉 헤더파일에 어떤 함수들이 있는지, 그 헤더파일은 어디서 사용되는지 등,
사실 이런 종류의 의문을 해결하기는 쉽지 않습니다. 왜냐하면 기능의 필요가 있어서 코드가 작성된것이지 코드가 작성된 후 그걸 사용하는 기능들이 생겨난게 아니기 때문이죠
그래서 보통 문서들에서는 어떤 기능을 사용하고 싶으면 어떤 헤더파일을 인클루드하고 어떤 함수를 호출하세요. 라는 식으로 적혀있습니다

지금 막연히 소스코드 파일들을 하나하나 읽어보시는 것 같은데,
https://www.kernel.org/doc/html/latest/
리눅스 커널 공식문서를 보시면서 공부하시는 걸 추천드립니다

https://www.kernel.org/doc/ <- 여기도 좋아요
2017/08/23  
pkdo1030 감사합니다. 우선적으로 소스코드부터 분석을 시작했는데 답변님 도움덕에 어느정도 방향을 잡는거같습니다. 2017/08/23