kernel第一个模块

一、 编写第一个模块例子

$>vim mod_test01.c

#include <linux/module.h>
//模块的入口函数,在insmod时调用
static int __init my_init(void)
{
printk("hello kernel\n");//显示信息

return 0;//成功返回0,失败返回负数
}
//模块出口函数,在rmmod时调用
static void __exit my_exit(void)
{
  printk("Bye,kernel\n");
}
module_init(my_init);
module_exit(my_exit);
MODULE_AUTHOR("LFJ");
MODULE_LICENSE("GPL");

$>vim Makefile

KERNEL := /usr/src/linux-headers-`uname -r`/
obj-m := mod_test01.o
myko := mod_test01.ko
all:
  make -C $(KERNEL) M=`pwd` modules

clean:
  make -C $(KERNEL) M=`pwd` clean

1、在pc上进行安装并测试;

2、注意:linux内核源码的路径中,可以包含中文,但是一定不能有空格

3、编译模块

$>make

二、模块的相关命令:

1.模块加载

sudo insmod mod_test01.ko

安装模块后,默认调用模块入口函数

2.查看内核信息

显示printk的信息

dmesg

清除printk的缓存区

sudo dmesg -c

3.卸载模块
sudo rmmod mod_test01
4.显示模块信息
modinfo mod_test01.ko
5.列出内核中已经加载的模块
lsmod

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • make menuconfig过程解析作者 codercjg 在 28 九月 2015, 5:27 下午 make...
    codercjg阅读 1,053评论 0 1
  • linux设备模型bus,device,driver作者 codercjg 在 10 十一月 2015, 2:43...
    codercjg阅读 423评论 0 1
  • linux设备模型bus,device,driver作者 codercjg 在 10 十一月 2015, 2:43...
    codercjg阅读 586评论 0 1
  • 1:InputChannel提供函数创建底层的Pipe对象 2: 1)客户端需要新建窗口 2)new ViewRo...
    自由人是工程师阅读 5,479评论 0 18
  • Linux 对大多数的驱动作了分类:块设备驱动、网络驱动、I 2 C 驱动、USB 驱动、SPI 驱动、音频驱动等...
    不配野心阅读 3,010评论 0 0