linux 内核 linux kernel travel
linux?內(nèi)核?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包含了常用的內(nèi)核函數(shù)*/
#inlcude<linux/init.h>??????????? /*?init.h?包含了宏 _init和_exit?它們?nèi)菰S釋放內(nèi)存*/
/*?頭文件*/
static int_init lkp_init(void)
{
printk("<1>hello,world! from the kernel space... \n");???? /*?模塊初始化,printk函數(shù)
???????????????????????????????????????????????????????????????相當(dāng)于C語言中的printf輸出 函數(shù),<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);??????????????????? /*?可加載模塊,內(nèi)核在此處調(diào)用 lkp_cleanup?函數(shù)*/
MODULE_LICENSE("GPL");?????????????????? /*?提示沒有GNU公共許可證*/
module_init()?和 cleanup_exit
module_init()?向內(nèi)核注冊模塊所提供的新功能
cleanup_exit()?注銷由模塊提供的新功能
????????????????????C語言應(yīng)用程序?????內(nèi)核模塊程序
使用函數(shù)?????? Libc庫?????????????????內(nèi)核函數(shù)
運行空間???????用戶空間??????????????內(nèi)核空間
運行權(quán)限???????普通用戶??????????????超級用戶
入口函數(shù)?????? main()????????????????? module_init()
出口函數(shù)?????? exit()??????????????????? module_exit()
編譯????????????? Gcc-c?????????????????? makefile
連接????????????? Gcc????????????????????? insmod
運行??????????????直接運行?????????????? insmod
調(diào)試????????????? Gdb????????????????????? kdbug kdb kgdb
轉(zhuǎn)載于:https://blog.51cto.com/nickboot/1682089
總結(jié)
以上是生活随笔為你收集整理的linux 内核 linux kernel travel的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Karma和Jasmine自动化单元测试
- 下一篇: 年度最期待游戏废土2登陆Linux