Linux内核模块编程
Linux內核模塊編程
(作者:Baron_wu 禁止轉載)
首先,創建一個內核模塊并插入Linux內核中。這是實驗第一部分
首先查看當前內核模塊使用情概況:lsmod
Module:模塊名
Size:模塊大小
Used by:這些模塊在哪被使用
接下來編寫一個simple.c的程序,當加載和卸載內核模塊時給出適當的消息。
代碼如下:
Simple_list (模塊入口點) 返回0代表成功 其他值代表失敗
Simple_exit(模塊退出點) 無返回值
兩個函數都沒有參數
接下來兩個宏指令是注冊模塊的入口與出口
Module_init()
Module_exit()
printk()
注意入口點與出口點是如何調用系統函數printk的。Printk()是內核對應的printf(),輸出傳給內核加載模塊,通過使用命令dmesg來查看他的內容。Printk()允許指定優先級標志。它的值在包含文件<linux/printk.h>中給出。
在這個實例中KERN_INFO是優先的。它就像被定義的一個信號消息。
最后三行屬于軟件許可信息,是內核模塊開發的標準格式。
Simple.c用Makefile這個文件來進行編譯。在終端輸入make進行編譯。
Makefile文件內容
obj-m += simple.o all:make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean:make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean編譯后將會生成多個文件, 文件simple.ko代表編譯后生成的內核模塊。
首先在含有simple.c 和Makefile的文件目錄下執行make命令(我的這兩個文件在桌面上)
之后將會生成許多文件如下所示:
== Simple.ko是生成的內核模塊 ==
接下來便是加載和移除內核模塊的演示了。
首先在之前生成的編譯模塊的目錄中執行命令:sudo insmod simple.ko 來加載內核模塊
緊接著輸入dmesg來查看當前內核加載情況。
在最后一行可以看到加載成功的消息。
**之后要進行的便是移除內核模塊的操作。**在終端輸入命令:sudo rmmod simple
接著查看是否移除成功。輸入命令:dmesg
可以看到已經成功移除。
因為內核記錄很快就會填滿 所以定期清除緩沖區是有必要的。
執行命令:sudo dmesg -c
到此,Linux內核模塊編程第一部分結束。
總結
以上是生活随笔為你收集整理的Linux内核模块编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python多线程豆瓣影评API接口爬虫
- 下一篇: Linux内核编程的特点