1.1 linux内核模块简介
模块是linux提供的动态加载代码的功能。模块具有如下特点:
1.模块一旦被加载,就和内核其它部分完全一样。
2.模块本身不被编译进内核,从而控制了内核的大小
1.2 下面是一个常见的内核模块的举例:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
static int __init lkp_init(void)
{
printk("<1>Hello,world! frome the kernel space...\n");
return 0;
}
static void __exit lkp_cleanup(void)
{
printk("<1>Goodbye,world! leaving kernel space...\n");
}
module_init(lkp_init);
module_exit(lkp_cleanup);
MODULE_LICENSE("GPL");
对应的makefile:
#Makefile
obj-m += hellomod.o #编译为模块
CUR_PATH := $(shell pwd) #取当前路径
LINUX_KERNEL := $(shell uname -r)
本文介绍了Linux内核模块的基本概念,包括模块的特点、模块的加载与卸载命令,如insmod、rmmod和lsmod。通过示例展示了内核模块的简单代码结构,包括加载和卸载函数,并讲解了如何定义和使用模块参数。此外,还讨论了模块的符号导出、版本声明以及使用计数的重要性,为理解Linux内核模块提供了基础。
订阅专栏 解锁全文
558

被折叠的 条评论
为什么被折叠?



