2013-06-02 3 views
0

내가, 리눅스에서 사용자 공간 함수에 의해 호출되는 커널 공간 함수를 작성 아래와 같이 할 :이 샘플 코드가 가능하다는 것을사용자 공간 함수에 의해 호출 된 커널 공간 함수를 작성하는 방법은 무엇입니까?

// kernel space function. 
void hello_kernel() 
{ 
    printk(KERN_INFO "Hello kernel space."); 
    printk(KERN_INFO "I can do any thing!"); 
} 

// user space function 
void hello_kernel(); 
int main() 
{ 
    printf("Invoking a kernel space function."); 
    hello_kernel(); 
    return 0; 
} 

내가 어떤 생각을 가지고 있지 않거나 아니.

사용자 공간 함수에 의해 호출 된 커널 공간 함수를 작성하는 방법은 무엇입니까?

+0

이렇게하려면 커널 모듈을 작성해야합니다. http://lwn.net/Kernel/LDD3/ – djf

+3

을 참조하십시오. "시스템 호출"이라고합니다. "리눅스 시스템 호출"을 검색하면 몇 가지 힌트를 얻을 수 있습니다. – Mat

답변

3

사용자 코드가 커널 코드와 인터페이스하는 메커니즘은 here에 대해 읽을 수있는 시스템 호출입니다.

이것은 함수를 직접 호출 할 수 없다는 것을 의미합니다 (이것은 사용자 영역 메모리 보호 지점입니다).하지만 커널에 추가하고 다시 컴파일해야합니다.

이 정보는 인터넷 (단지 검색)에서 사용할 수 있으며 예를 들어 here과 같이 이전에 요청되었습니다.