zoukankan      html  css  js  c++  java
  • MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE宏

    在阅读Linux Driver源码时,我们常常会在文件的结尾处看到诸如:MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE等宏定义,这些宏主要是定义了一些模块信息。

    但这些模块信息详细是怎么加到模块里的?就须要深入分析一下这些宏定义详细是怎么定义的。以下我们以MODULE_AUTHOR为例。来详细分析一下有关module信息的宏。

    首先,我门来看一下MODULE_AUTHOR()宏的定义:

    #define MODULE_AUTHOR(_author)   MODULE_INFO(author, _author)

    #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)

    #define __MODULE_INFO(tag, name, info)  

    static const char __UNIQUE_ID(name)[]  

      __used __attribute__((section(".modinfo"), unused, aligned(1))) 

      = __stringify(tag) "=" info

    #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)

    #define ___PASTE(a,b) a##b

    #define __PASTE(a,b) ___PASTE(a,b)

    到这里。关于MODULE_AUTHOR()宏的所有定义已经所有展开。以下我们以一个实例来说明MODULE_AUTHOR的使用方法。

    比如:MODULE_AUTHOR("Dennis")

    展开后变为:

    static const char __UNIQUE_ID_Dennis0[]

    __used__attribute__((section(".modinfo"), unused, aligned(1)))

    = "author"“=”“Dennis”

    所以。展开后,我们能够发现,事实上MODULE_AUTHOR宏事实上是定义了一个以參数__author为标识符的一部分的字符数组。且将此变量放在.modinfo的段中。以便在载入模块时。提供模块信息。

  • 相关阅读:
    UIWindow与UIView
    UIView与CALayer 区别
    setter getter 方法
    KVC、KVO 理解
    c语言实现单链表
    浅谈C的应用与常见error
    POJ 3683 Priest John's Busiest Day(2-SAT+方案输出)
    Google Code Jam 2008 Round 1A C Numbers(矩阵快速幂+化简方程,好题)
    POJ 3686 The Windy's(思维+费用流好题)
    POJ 2686 Traveling by Stagecoach(状压二维SPFA)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5218205.html
Copyright © 2011-2022 走看看