커널 내부 통신에 대해 질문드립니다.

nox82의 이미지

안녕하세요. 커널 내부 통신에 대해 궁금한게 있어서 이렇게 글을 올리게되었습니다.
다름이 아니라, 커널 모듈을 만들어서 적재를 하려고 하는데요 이런 커널 모듈이 몇 개 더 있습니다.
이럴때, 커널 모듈간의 통신은 어떻게 이루어지는지 감이 안와서 조언을 구하고자 합니다.
흔히들 쓰는 IPC는 프로세스간 통신이라 커널에 동작하는게 아닌거 같은데 확신은 없고..
공유 메모리 방식을 쓰는거로 생각이 되는 검색해보면 엉뚱한 것만 나와서 답답하네요;;
혹 아시는분이 계시다면 조언 부탁드리겠습니다.

ninenon의 이미지

해본지 너무 오래되서 기억이 가물가물 한데요..

예전에 커널 모듈 개발할때는 Char 디바이스 하나 만들어서
했었네요.

디바이스 드라이버, 커널 모듈 두 가지를 연관해서 검색한번 해보세요.

clique의 이미지

리눅스는 커널소켓이 공개되어 있고 쓰기 편한 것으로 압니다.(사실 소켓이야 말로 궁극의 IPC이니...)
multiple reader-writer라면 공유메모리 정도 밖에 방법이 없지 않나 싶네요.

태훈의 이미지

EXPORT_SYMBOL을 쓰세요.

* a.c

void foo(int arg)
{
    /* Do something. */ 
}
EXPORT_SYMBOL(foo);

* b.c

void boo(int arg)
{
    /* Do something. */ 
    foo(1);
}

헤더 파일과 extern에 대한 내용은 C의 기본이니 따로 언급하지 않겠습니다. 호출 당하는 쪽의 모듈부터 로드해야 합니다.

Just do it!