2013-06-02 60 views
0

我想寫,通過在Linux的用戶空間函數調用內核空間的功能,如下圖所示:如何編寫由用戶空間函數調用的內核空間函數?

// 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

它被稱爲「系統調用」。搜索「linux系統調用」應該會給你一些提示。 – Mat

回答

3

用戶級代碼與內核代碼接口的機制是系統調用,您可以閱讀關於​​的系統調用。

這意味着不能直接調用函數(這是用戶態內存保護的重點),而是需要將其添加到內核並重新編譯它。

此信息在互聯網上(僅搜索)可用,且之前有人問過,例如here

相關問題