linux最简单的内核模块,一个最简单的Linux内核模块(代码实例)

#include

#include

static int __init hello_init(void)

{

printk(KERN_INFO "Hello World enter\n");

return 0;

}

static void __exit hello_exit()

{

printk(KERN_INFO "Hello World exit\n");

}

module_init(hello_init);

module_exit(hello_exit);

MODULE_LICENSE("GPL");

这个最简单的内核模块只包含内核模块加载函数、卸载函数和许可权限的声明。

下面需要编写对应的Makefile文件,生成对应的.ko文件

KERN_DIR = /home/fitz/home/kernel/linux-2.6.22.6

all:

make -C $(KERN_DIR) M=`pwd` modules

clean:

make -C $(KERN_DIR) M=`pwd` modules clean

rm -rf modules.order

obj-m += hello.o

/home/fitz/home/kernel/linux-2.6.22.6是对应linux内核的路径,需要注意的是,这里的内核必须成功经过编译。

输入make命令即可生成对应的.ko文件

63f07a243bcb8f8bd9cced124838f2ee.png

将hello.ko文件上传到单板系统,输入

insmod hello.ko加载模块,rmmod hello.ko卸载模块,可以看到对应的打印。

594d8094e8185974839aadbd76a54e10.png

内核模块中用于输出的函数是内核空间的printk()而非用户空间的printf(),printk()的用法和printf()的用法基本相似,前者可定义输出级别。printk()可作为一种最基本的内核调试手段。

本文地址:https://blog.csdn.net/Tony_Stack/article/details/107802546

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值