#define __init __attribute__ ((__section__ (".init.text")))
#define __initdata __attribute__ ((__section__ (".init.data")))
#define __exitdata __attribute__ ((__section__(".exit.data")))
#define __exit_call __attribute_used__ __attribute__ ((__section__ (".exitcall.exit")))
#ifdef MODULE
#define __exit __attribute__ ((__section__(".exit.text")))
#else
#define __exit __attribute_used__ __attribute__ ((__section__(".exit.text")))
#endif
__init和__exit标记函数,__initdata和__exitdata标记数据。
此宏定义可知标记后的函数与数据其实是放到了特定的(代码或数据)段中。
标记为初始化的函数表明公在初始化期间使用。
在模块装载之后,模块装载就
会将初始化函数扔掉。这样可以将该函数占用的内存释放出来。
__exit修饰词标记函数只在模块卸载时使用。如果模块被直接编进内核
或内核不允许卸载模块。被此标记的函数将被简单地丢弃。
分享到:
相关推荐
Module 的 __init__ 和 __exit 宏 在 Linux 内核中,__init__ 和 __exit__ 是两个特殊的宏,用于告诉内核在静态编译时对这些函数进行特殊处理。当内核编译成模块时,这两个宏起着关键的作用。 __init__ 宏 __init...
__init和__exit宏可以指定函数和变量的生命周期。在编写内核模块时,需要遵守一定的编程规则和约定,以确保模块的正确性和可靠性。 Linux内核模块编程入门可以分为几个步骤:首先,需要编写模块的源代码,包括...
#### 2.4 __init和__exit宏 介绍`__init`和`__exit`宏的作用。`__init`宏标记模块的初始化函数,而`__exit`宏标记模块的清理函数。这些宏确保函数仅在模块加载和卸载时被调用,提高代码的可读性和安全性。 #### ...
- **2.4 HelloWorld (Part 3): __init 和 __exit 宏** - **2.5 HelloWorld (Part 4): 许可证与模块文档** - **2.6 传递命令行参数** #### 四、核心知识点详解 ##### 1. 什么是内核模块? - **定义**: 内核模块是...
__init和__exit宏是Linux内核提供的两个宏,用于标记初始化函数和清理函数。当内核模块加载到内核时,__init标记的函数会被调用一次,并在模块加载后丢弃,以节省内存。__exit宏则用于标记模块卸载时需要执行的清理...
- **初始化和清理**:`__init` 和 `__exit` 宏分别用于指定模块初始化和清理函数。这些函数在模块加载和卸载时被调用。 **Hello, World (part4): 内核模块证书和内核模块文档说明** - **证书**:确保内核模块遵循...
__init和__exit宏的使用 在内核模块中,`__init`和`__exit`宏用于标记初始化函数和清理函数。`__init`函数在模块加载时由内核自动调用,用于执行资源分配、注册功能等初始化操作;`__exit`函数则在模块卸载时被...
- **2.4 Hello World (part 3): __init 和 __exit 宏**:解释这两个宏的作用。 - **2.5 Hello World (part 4): 许可证和模块文档**:讨论内核模块的许可证选择及文档编写。 - **2.6 传递命令行参数**:介绍如何将...
- 解释了如何使用`__init`和`__exit`宏来初始化和清理模块资源,这些宏通常用于模块的入口点和出口点。 - **2.5 Hello World (part4): Licensing and Module Documentation** - 探讨了模块文档和许可的重要性,...
##### 3.4 HelloWorld (part 3): 关于__init和__exit宏 这一节讲解了如何使用`__init`和`__exit`宏来标记初始化和清除函数,这是编写健壮内核模块的重要概念之一。 ##### 3.5 HelloWorld (part 4): 内核模块证书和...
- **2.4 Hello World (part 3): __init 和 __exit 宏** - 介绍了如何使用 __init 和 __exit 宏来初始化和清理内核模块。 - **2.5 Hello World (part 4): 许可证和模块文档** - 解释了如何指定模块的许可证信息...
- **__init 和 __exit 宏**:`__init` 宏用于标记初始化函数,该函数会在模块加载时执行;`__exit` 宏则用于标记清除函数,该函数会在模块卸载时执行。 - **内核模块证书和文档说明**:这是为了确保模块符合一定的...
- **__init和__exit宏**:这两个宏分别用于标记模块的初始化和清理函数,确保它们被正确地调用。 - **内核模块证书和文档**:解释了如何为内核模块添加版本信息和其他元数据,以及如何编写文档来描述模块的行为。 - ...
- **2.4 HelloWorld (part3): __init 和 __exit 宏**:讲解了使用这两个宏进行模块初始化和清理的最佳实践。 - **2.5 HelloWorld (part4): 许可证和模块文档**:强调了内核模块开发中的许可证选择以及模块文档的...
- 探讨__init和__exit宏的作用。 - **Hello, World! 示例(部分4)** - 内核模块证书和文档说明。 - **从命令行传递参数给内核模块** - 如何通过命令行传递参数给内核模块。 - **由多个文件构成的内核模块** - ...