2012-06-13 2 views
2

모두 알고 있듯이 netlink는 사용자/커널 공간 통신 메커니즘입니다.netlink를 통해 두 리눅스 커널 모듈간에 통신이 가능합니까?

커널 모듈에서 다른 모듈로 통신하고 싶습니다. 다른 커널 모듈은 이미 netlink 인터페이스를 가지고 있습니다.

사용자 공간에서 커널 모듈과 넷 링크를 연결할 수 있습니까?

+0

내보내기 기호 - 그것은 좋은 생각,하지만 난 다른 모듈을 수정할 수 없습니다. 필요한 기능을 내 보내지 않습니다. – AlexeyPerevalov

답변

3

짧은 답변 : 제

당신이 기호를 다른 커널 모듈로 수출하고 있습니다 (전역 변수 나 함수)를 사용한다이 개 커널 모듈 간의 통신을합니다.

netlink 소켓은 커널과 사용자 영역간에 통신하는 데 사용됩니다. AFAIR 커널 내에서 통신하려면 netlink (적어도 선호하는 방법이 아닙니다)를 사용할 수있는 방법이 없습니다. 기호를 내보내기위한

예 :

module1.c:

int foo(int a) 
    { 
     /* do some stuff here */ 
    } 
    EXPORT_SYMBOL(foo); 

module2.c

extern int foo(int); 
    int bla(int b) 
    { 
     /* call foo(a) */ 
     int ret = foo(b); 
    }