kernel space中的程式入口,出口分別是module_init,module_exit中的handler,__init 巨集是告知編譯程式相關的程式或者變數僅用於初始化,會放到特殊的記憶體段中,初始化結束後就釋放這段記憶體。在驅動程式中僅有乙個module-init和cleanup_exit點。
插入或移除模組後,可以通過dmesg看到相應的訊息。
hello_kernel.c:
#include#include#includestatic int __init lkp_init(void)
static void __exit lkp_cleanup(void)
module_init(lkp_init);
module_exit(lkp_cleanup);
makefile的寫法(在核心的makefile中定義了
kernelrelease,先執行核心**下面的makefile,然後執行當前工作目錄的這個makefile):
ifneq ($(kernelrelease),)
mymodule-objs:=hello.c
obj-m += hello.o
else
pwd := $(shell pwd)
kver := $(shell uname -r)
kdir := /lib/modules/$(kver)/build
all:
$(make) -c $(kdir) m=$(pwd)
clean:
rm -rf *.o *.mod.c *.ko *.mod.o *.symvers *.order *-
endif
--------
Opendaylight入門,建立Hello工程
mvn archetype generate darchetypegroupid org.opendaylight controller darchetypeartifactid opendaylight startup archetype darchetyperepository org cont...
linux核心 GPIO口程式設計入門
1.api介面 請求gpio口 int gpio request unsigned gpio,const char label 釋放gpio口 void gpio free unsigned gpio 判斷gpio索引號是否有效 gpio口是否存在 int gpio is valid int num...
Linux下開始乙個簡單核心模組 hello
目的 建立乙個簡單的核心模組,並把它掛載到核心中去。這個核心模組沒有與外界有任何的資料互動。定義 kernel 表示此原始檔可以看到核心原始檔的所有內容 因為有的核心的標頭檔案會被使用者空間的應用程式包含,但是內 核中的內容有些是核心專用的,需要對使用者隱藏起來 ifndef kernel defi...