linux 内核模块 编写例子,Linux内核模块实例

一个简单的内核模块来读取 timespec 数据结构的数据。

"read_kernel_time.c":

#include

#include

#include

#include

struct timespec ts;

static int __init init_k_time(void)

{

printk(KERN_INFO "Get kernel time:\n");

ts = current_kernel_time();

printk(KERN_INFO "ts->tv_sec: %ld\t ts->tv_nsec: %ld\n", ts.tv_sec, ts.tv_nsec);

return 0;

}

static void __exit exit_k_time(void)

{

printk(KERN_INFO "Exit\n");

}

module_init(init_k_time);

module_exit(exit_k_time);

MODULE_LICENSE("GPL");

"Makefile":

obj-m := read_kernel_time.o

all:

make -C /lib/modules/`uname -r`/build M=$(PWD) modules

clean:

make -C /lib/modules/`uname -r`/build M=$(PWD) clean

依赖的编译包:gcc, make, kernel-devel.

特殊情况,在fedora下,默认系统里没有kernel-devel包,如果此时安装的话,版本会比当前的kernel版本高,此时编译时会出现类似这样的错误:

make[1]: *** /lib/modules/4.14.13-200.fc26.x86_64/build: No such file or directory. Stop.

make: *** [Makefile:4: all] Error 2

错误就是当前kernel版本是"4.14.13-200.fc26",但是直接用"dnf install kernel-devel"安装的版本是"4.14.14-200.fc26"。这种情况下可以用下面的命令来安装:

sudo dnf install "kernel-devel-uname-r == $(uname -r)"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值