보통 커널 소스를 보면 static __inline__ int 함수명{}이런 식으로 구현되 있습니다. 그전에는 그냥 "자주 사용되는 루틴을 inline함수로 구현하면 빠르다"라고 알고 있지만,, 정확히 왜 사용하는지 궁금하더군요
매개변수 보내야하고, 반환값 받아야 하죠. 또한 되돌아올 주소도 기억했다가 꺼내서 돌아와야 하고요. (적어도 C/C++ 까지의 세계에서...)
하지만 함수호출방식은 가독성, 관리의 편이성에 도움을 주므로 작성은 함수호출방식을 쓰고, 실제 code 변환은 그냥 문장삽입방식으로 바꿔주는거죠.
그런데 kernel source 를 보시는 분이라면 이런 단순한 대답을 원하는 것 같지는 않군요... -_-. 질문에 뭔가 다른 뜻이라도...
현재 코딩 하는 내용 중에서 부득이 하게 macro와 inline함수를 이용하여 님께서 올리신 대로 코드의 가독성을 위해서라도 헤더에서 구현해야 하겠다는 생각이 들긴 했습니다.
매크로와 inline함수는 제가 아는 한도에서는 컴파일시 gcc내에서 매크로처리와 inline함수가 같은 루틴?(cc에서인가요?) 에서 처리 되는... 코드 처리.. 로 알고 있습니다.
하지만, 실제 구현에서 확신이 안서서 확인차 물어본 겁니다.
언제나 그렇지만 테스트전에 확인 절차가 필요할 거 같아 질문해봤습니다 ^^ 답변 감사합니다 .
open source의 그날까지!
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
정석적인 함수호출은 느립니다.
매개변수 보내야하고, 반환값 받아야 하죠.
또한 되돌아올 주소도 기억했다가 꺼내서 돌아와야 하고요.
(적어도 C/C++ 까지의 세계에서...)
하지만 함수호출방식은 가독성, 관리의 편이성에 도움을 주므로 작성은
함수호출방식을 쓰고, 실제 code 변환은 그냥 문장삽입방식으로 바꿔주는거죠.
그런데 kernel source 를 보시는 분이라면 이런 단순한 대답을 원하는 것 같지는 않군요... -_-. 질문에 뭔가 다른 뜻이라도...
답변 감사합니다.
현재 코딩 하는 내용 중에서 부득이 하게 macro와 inline함수를
이용하여 님께서 올리신 대로 코드의 가독성을 위해서라도
헤더에서 구현해야 하겠다는 생각이 들긴 했습니다.
매크로와 inline함수는 제가 아는 한도에서는 컴파일시 gcc내에서
매크로처리와 inline함수가 같은 루틴?(cc에서인가요?)
에서 처리 되는... 코드 처리..
로 알고 있습니다.
하지만, 실제 구현에서 확신이 안서서 확인차 물어본 겁니다.
언제나 그렇지만 테스트전에 확인 절차가 필요할 거 같아 질문해봤습니다 ^^
답변 감사합니다 .
open source의 그날까지!
댓글 달기