`
weiyinchao88
  • 浏览: 1235027 次
文章分类
社区版块
存档分类
最新评论

__init和__exit宏

 
阅读更多
#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

    Module 的 __init__ 和 __exit 宏 在 Linux 内核中,__init__ 和 __exit__ 是两个特殊的宏,用于告诉内核在静态编译时对这些函数进行特殊处理。当内核编译成模块时,这两个宏起着关键的作用。 __init__ 宏 __init...

    Linux内核分析与应用课件第1章(二)Linux 内核结构及内核模块.pdf

    __init和__exit宏可以指定函数和变量的生命周期。在编写内核模块时,需要遵守一定的编程规则和约定,以确保模块的正确性和可靠性。 Linux内核模块编程入门可以分为几个步骤:首先,需要编写模块的源代码,包括...

    The Linux Kernel Module Programming Guide.pdf

    #### 2.4 __init和__exit宏 介绍`__init`和`__exit`宏的作用。`__init`宏标记模块的初始化函数,而`__exit`宏标记模块的清理函数。这些宏确保函数仅在模块加载和卸载时被调用,提高代码的可读性和安全性。 #### ...

    The Linux Kernel Module Programming Guide

    - **2.4 HelloWorld (Part 3): __init 和 __exit 宏** - **2.5 HelloWorld (Part 4): 许可证与模块文档** - **2.6 传递命令行参数** #### 四、核心知识点详解 ##### 1. 什么是内核模块? - **定义**: 内核模块是...

    linux kernel module programming guide

    __init和__exit宏是Linux内核提供的两个宏,用于标记初始化函数和清理函数。当内核模块加载到内核时,__init标记的函数会被调用一次,并在模块加载后丢弃,以节省内存。__exit宏则用于标记模块卸载时需要执行的清理...

    linux内核模块编程.pdf(标记版)

    - **初始化和清理**:`__init` 和 `__exit` 宏分别用于指定模块初始化和清理函数。这些函数在模块加载和卸载时被调用。 **Hello, World (part4): 内核模块证书和内核模块文档说明** - **证书**:确保内核模块遵循...

    The Linux Kernel Programming Guide.pdf

    __init和__exit宏的使用 在内核模块中,`__init`和`__exit`宏用于标记初始化函数和清理函数。`__init`函数在模块加载时由内核自动调用,用于执行资源分配、注册功能等初始化操作;`__exit`函数则在模块卸载时被...

    Linux Kernel Programming Guide.pdf

    - **2.4 Hello World (part 3): __init 和 __exit 宏**:解释这两个宏的作用。 - **2.5 Hello World (part 4): 许可证和模块文档**:讨论内核模块的许可证选择及文档编写。 - **2.6 传递命令行参数**:介绍如何将...

    TheLinuxKernelModuleProgrammingGuide

    - 解释了如何使用`__init`和`__exit`宏来初始化和清理模块资源,这些宏通常用于模块的入口点和出口点。 - **2.5 Hello World (part4): Licensing and Module Documentation** - 探讨了模块文档和许可的重要性,...

    Linux内核驱动模块编程指南.pdf

    ##### 3.4 HelloWorld (part 3): 关于__init和__exit宏 这一节讲解了如何使用`__init`和`__exit`宏来标记初始化和清除函数,这是编写健壮内核模块的重要概念之一。 ##### 3.5 HelloWorld (part 4): 内核模块证书和...

    lkmpg2.6

    - **2.4 Hello World (part 3): __init 和 __exit 宏** - 介绍了如何使用 __init 和 __exit 宏来初始化和清理内核模块。 - **2.5 Hello World (part 4): 许可证和模块文档** - 解释了如何指定模块的许可证信息...

    linux内核模块编程

    - **__init 和 __exit 宏**:`__init` 宏用于标记初始化函数,该函数会在模块加载时执行;`__exit` 宏则用于标记清除函数,该函数会在模块卸载时执行。 - **内核模块证书和文档说明**:这是为了确保模块符合一定的...

    linux内核开发教程

    - **__init和__exit宏**:这两个宏分别用于标记模块的初始化和清理函数,确保它们被正确地调用。 - **内核模块证书和文档**:解释了如何为内核模块添加版本信息和其他元数据,以及如何编写文档来描述模块的行为。 - ...

    The Linux kernel module programming guide

    - **2.4 HelloWorld (part3): __init 和 __exit 宏**:讲解了使用这两个宏进行模块初始化和清理的最佳实践。 - **2.5 HelloWorld (part4): 许可证和模块文档**:强调了内核模块开发中的许可证选择以及模块文档的...

    中文The Linux Kernel Module Programming Guide.pdf

    - 探讨__init和__exit宏的作用。 - **Hello, World! 示例(部分4)** - 内核模块证书和文档说明。 - **从命令行传递参数给内核模块** - 如何通过命令行传递参数给内核模块。 - **由多个文件构成的内核模块** - ...

Global site tag (gtag.js) - Google Analytics