Macros 在编写可加载内核模块时需要使用诸如module_init和module_exit之类的宏
在编写可加载的内核模块时,需要使用诸如Macros 在编写可加载内核模块时需要使用诸如module_init和module_exit之类的宏,macros,linux-kernel,kernel,kernel-module,Macros,Linux Kernel,Kernel,Kernel Module,在编写可加载的内核模块时,需要使用诸如module\u init和module\u exit之类的宏吗?另外,我们为什么要使用诸如\uuu init或\uu exit之类的宏呢。即使我们不用它们也能完成任务 没有宏 /* Without using MACROS Author: Sricharan Chiruvolu Date: 14 Dec 2014 */ #include <linux/module.h> #include <linux/kernel.h> int i
module\u init
和module\u exit
之类的宏吗?另外,我们为什么要使用诸如\uuu init
或\uu exit
之类的宏呢。即使我们不用它们也能完成任务
/*
Without using MACROS
Author: Sricharan Chiruvolu
Date: 14 Dec 2014
*/
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void){
printk(KERN_ALERT "This is our first program.");
return 0;
}
void cleanup_module(void){
printk(KERN_ALERT "End of our first program.");
}
/*
不使用宏
作者:Sricharan Chiruvolu
日期:2014年12月14日
*/
#包括
#包括
int init_模块(void){
printk(KERN_ALERT“这是我们的第一个程序”);
返回0;
}
空洞清理_模块(空洞){
printk(KERN_ALERT“我们的第一个程序结束”);
}
/*
Edited first.c; Added macros module_init and module_exit
Author: Sricharan Chiruvolu
Date: 14 Dec 2014
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
static int __init first_init(void)
{
printk(KERN_ALERT "This is our first program.");
return 0;
}
static void __exit first_exit(void)
{
printk(KERN_ALERT "End of our first program.");
}
module_init(first_init);
module_exit(first_exit);
/*
第一次编辑,c;添加了宏module_init和module_exit
作者:Sricharan Chiruvolu
日期:2014年12月14日
*/
#包括
#包括
#包括
静态int\uu init first\u init(void)
{
printk(KERN_ALERT“这是我们的第一个程序”);
返回0;
}
静态无效\uuu退出第一个\u退出(无效)
{
printk(KERN_ALERT“我们的第一个程序结束”);
}
模块_init(第一个_init);
模块退出(第一个退出);
模块{init,exit}()
添加必要的样板文件,以在模块文件加载/卸载到内核空间或从内核空间加载/卸载时初始化/清理模块并运行入口/出口代码
\uuu init
告诉内核这个函数执行一次又一次
当module\u init()
在insmod时初始化模块时,不要主要针对内置驱动程序返回
"
属性_init将导致初始化函数
在初始化后被丢弃,并回收其内存
完整。但是,它只对内置驱动程序有效;它没有
对模块的影响。相反,退出会导致省略标记的
当驱动程序不是作为模块构建时,该函数;同样,在模块中,
它没有效果
使用_init(和数据项的_initdata)可以减少
内核使用的内存量。标记没有坏处
模块初始化功能使用_init,即使当前
这也没有任何好处。初始化部分的管理已经完成
模块尚未实现,但这是一个可能的增强
为了未来
“