linux 内核 linux kernel travel
linux?內核?kernel_核 travel_旅行?linux kernel travel
linux 2.6
1
hellomod.c
001
// hello world driver for linux 2.6
?#include <linux/module.h>????????????????? /*所有模塊都要使用頭文件module.h*/
?#include<linux/kernel.h>?????????????? /*kernel.h包含了常用的內核函數*/
#inlcude<linux/init.h>??????????? /*?init.h?包含了宏 _init和_exit?它們容許釋放內存*/
/*?頭文件*/
static int_init lkp_init(void)
{
printk("<1>hello,world! from the kernel space... \n");???? /*?模塊初始化,printk函數
???????????????????????????????????????????????????????????????相當于C語言中的printf輸出 函數,<1>立即輸出*/
return 0;
}
static void_exit lkp_cleanup(void)
{
printk("<1>Goodbye,world! leaving kernel space...\n");
}
module_init(lkp_init);???????????????????????????? /*?入口點*/
module_exit(lkp_cleanup);??????????????????? /*?可加載模塊,內核在此處調用 lkp_cleanup?函數*/
MODULE_LICENSE("GPL");?????????????????? /*?提示沒有GNU公共許可證*/
module_init()?和 cleanup_exit
module_init()?向內核注冊模塊所提供的新功能
cleanup_exit()?注銷由模塊提供的新功能
????????????????????C語言應用程序?????內核模塊程序
使用函數?????? Libc庫?????????????????內核函數
運行空間???????用戶空間??????????????內核空間
運行權限???????普通用戶??????????????超級用戶
入口函數?????? main()????????????????? module_init()
出口函數?????? exit()??????????????????? module_exit()
編譯????????????? Gcc-c?????????????????? makefile
連接????????????? Gcc????????????????????? insmod
運行??????????????直接運行?????????????? insmod
調試????????????? Gdb????????????????????? kdbug kdb kgdb
轉載于:https://blog.51cto.com/nickboot/1682089
總結
以上是生活随笔為你收集整理的linux 内核 linux kernel travel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Karma和Jasmine自动化单元测试
- 下一篇: 通过测试想到的一些问题