freeBSD核心模組編寫初級

2021-08-29 09:38:40 字數 986 閱讀 4874

預備知識:

freebsd模組事件型別:

typedef enum modeventtype modeventtype_t;

在系統中註冊乙個載入模組和模組事件處理程式

declare_module(name, data, sub, order)

name:模組的名字

data:是乙個moduledata_t型別的結構 並且各個欄位都進行了初始化

typedef struct moduledata 

moduledata_t;

sub:模組所屬於的核心子系統

enum sysinit_sub_id 

order: 模組在子系統中初始化次序

enum sysinit_elem_order ;

過程:

(1)編寫makefile如下

kmod =  netlink   #模組名

srcs=netlink.c  #編譯的c檔案

.include

(2)寫c**netlink.c

#include #include #include #include static int test_handler(struct module *module, int event, void *arg) 

return(e);

}static moduledata_t test_conf = ;

//定義模組

declare_module(netlink, test_conf, si_sub_drivers, si_order_middle);

(3)載入模組

make load 或者 kldload ./netlink.ko

(4)解除安裝模組

make unload或者 kldunload netlink.ko

編寫核心模組hello world

1 準備環境 mkdir src lkm example cd src lkm example 2 建立檔案 lkm example.c include include include module license gpl module author robert w.oliver ii modul...

編譯FreeBSD核心

過去編譯過linux的核心,發現挺容易的。現在愛上了freebsd,發現編譯freebsd的核心更加簡單,時間更快 第一步是需要看看在現有的系統上是否存在有原始碼 ls usr src sys若出現的結果是 第二步執行下面的命令 cd usr src sys i386 conf然後 cp gener...

FreeBSD核心簡介

freebsd核心可以被看做是一種伺服器,它向使用者程序提供服務。程序通過系統呼叫訪問這些服務。其中有些服務,比如程序排程和記憶體管理,採用核心態執行的程序,或者核心裡定期執行的例程這樣的形式來實現。核心程序只在核心中發揮作用,執行核心映象的 以核心特權模式執行。核心還為每台裝置啟動乙個核心程序,負...