MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE宏

MODULE_DEVICE_TABLE函数 在你的板子的linux内核有如下文件:/arch/arm/mach-xxxx/board_xxxx.c,该文件中,有struct i2c_board_info __initdata i2c_info,该结构体列表中,有你的这个 wifi driver的i2c信息,这两份信息,通过 wifi_rf_i2c_id 里面的 RDA_WIFI_RF_I2C_DEVNAME 名称来匹配,名称一致,则成功 阅读详情

在阅读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的段中。以便在加载模块时,提供模块信息。

流量特征工程实战:基于Python脚本的CIC-FlowMeter批量自动化处理 本文详细介绍了如何利用Python脚本对CIC-FlowMeter工具进行批量自动化封装,实现从海量PCAP文件中高效提取流量特征并生成CSV文件。通过构建健壮的自动化流水线,解决了手动处理效率低下、易出错的问题,并分享了并行处理、错误处理等关键优化技巧,助力网络流量分析与机器学习数据预处理工作。 阅读详情

相关推荐

CAN总线开发必看:报文发送类型全解析(含Cycle/Event/CE/IfActive对比)

本文深入解析CAN总线开发中的四种报文发送类型(Cycle/Event/CE/IfActive),对比其核心特征与工程应用场景。通过典型ECU交互案例和决策矩阵,帮助开发者根据实时性、总线效率等需求选择最优方案,并详解信号发送模式与恢复机制,提升车载网络通信可靠性。

weixin_30632089的博客 310

MODULE_AUTHOR 功能

#include <linux/module.h> #include <linux/init.h> moudle.h 包含了大量加载模块需要的函数和符号的定义. 你需要 init.h 来指定你的初始化和清理函数, 如我们在上面的 “hello world” 例子里见到的, 这个我们在下一节中再讲. 大部分模块还包含 moudleparam.h, 使得可以在模块加载时传递参数...

weixin_38853761的博客 3720

STM32学习笔记 二、基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发

系列文章目录 一、基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁 文章目录系列文章目录前言一、配置CubeMX二、逻辑代码部分 前言 这次我用的板子是一个用STM32F103C8T6作为主控芯片的一个数据采集卡,两个LED灯连接的引脚是PB3与PB4,TX与RX引脚分别是PA9和PA10。 一、配置CubeMX 1、新建工程; 2、配置时钟源,在RCC里面的HSE配置的是晶振时钟; 3、配置程序烧录引脚SYS为SWD模式; 4、配置GPIO口,配置一个LE

遗忘丶的博客 1万+

MODULE_AUTHOR宏(一)

用法 MODULE_AUTHOR(&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;lxp@hzmct.com&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;); 2.定义

qq_36412526的博客 3195

Ubuntu下为RK3568开发板搭建Qt交叉编译环境:手把手教你配置Qt Creator和远程调试

本文详细介绍了在Ubuntu系统下为RK3568开发板搭建Qt交叉编译环境的完整流程,包括工具链配置、Qt源码交叉编译、Qt Creator环境设置以及远程调试技巧。通过手把手教程,开发者可以快速掌握RK3568平台的Qt开发环境搭建方法,实现高效的应用开发和部署。

weixin_30776273的博客 372

如何在 Linux 上安装 RTX 5090 / 5080 /5070 Ti / 5070 驱动程序 — 详细指南

Linux 上的 NVIDIA 5090 是 AI、游戏和渲染的强大引擎,但需要耐心。如果稳定性是首要考虑因素,请坚持使用开源驱动程序,并关注 NVIDIA 论坛以获取未来更新。

iCloudEnd的博客 6903

【Linux驱动基础详解】| Linux模块声明与描述

我们在编写一个模块的时候,常常使用一些宏定义来标识模块的作者,版本,以及相关信息的描述,如:`MODULE_AUTHOR`、`MODULE_DESCRIPTION`、`MODULE_LICENSE`、`MODULE_ALIAS`等,那么这些宏是如何进行管理的呢?

Donge's Blog 2256

小卫星多普勒频偏MATLAB代码

多普勒频偏是由于发射机和接收机之间的相对运动而引起的频率变化。对于小卫星,由于其速度和高度的变化,多普勒频偏会变得更加明显。本文将探讨小卫星多普勒频偏的原理、影响因素以及补偿方法。多普勒频偏的原理当发射机和接收机之间存在相对运动时,接收到的信号频率会发生变化。这种频率变化称为多普勒频偏。其原理可以描述如下:设发射机和接收机之间的距离为 d,发射信号的频率为 f0,发射机和接收机的相对速度为 v。则接收到的信号频率 f 为:其中 c 为光速。

qq_59747472的博客 243

Linux驱动开发(四)——模块声明与描述

   本次实验中主要讲述宏:MODULE_LICENSE  MODULE_AUTHOR MODULE_DESCRIPTION MODULE_SUPPORTED_DEVICE和modinfo命令的使用。            宏 MODULE_LICENSE的作用主要是声明描述内核模块的许可权限,如果程序中不进行此声明,则在模块加载时,将会报出“ module license 'unspecifie...

代码穿越 2859

YOLOv11改进 | 注意力篇 | YOLOv11引入24年ECCV的自调制特征聚合注意力模块(SMFA),并构建C2PSA_SMFA

1.SMFA介绍1.1 摘要:基于Transformer的图像复原方法由于Transformer的自注意(self-attention,SA)特性能够更好地挖掘非局部信息,从而获得更好的高分辨率图像重建效果,因此具有重要的应用价值。然而,关键点积SA需要大量的计算资源,这限制了其在低功耗器件中的应用。此外,模拟退火机制的低通特性限制了其捕获局部细节的能力,从而导致平滑的重建结果。

tsg6698的博客 952

Vue2 - 详细实现解析Markdown内容生成侧边栏Toc目录索引,识别文章内容根据大标题/小标题自动生成多级文章目录,点击目录导航时跳转到文章内容对应的锚点位置带过渡动画,滑过锚点时高亮对应标题

vue2,nuxt2,Markdown,目录,文章目录锚点,滚动高亮导航文字,根据页面滚动高亮显示目录的侧边栏,自动提取标题生成右侧目录,vuemarkdown解析并生成目录,滚动页面的时候文章目录跟着选中效果,侧边栏滚动跟随页面,右边目录固定,左边内容可以滚动并且与左边目录联动,实现监听滚动,锚点定位,文章目录滚动跟随高亮,右边菜单点击目录滚动到对应标题,报错,渲染失败,文章内容,读取#标题符号,自动生成一个目录树,自动生成Toc目录,博客内容生成目录索引,资讯文章,生成锚点目录树TOC,详细示例代码教

🏆 前端领域优质创作者 3668

1.1 Linux内核模块编写

Linux内核模块是一段单独编译的内核代码,它在Linux内核空间运行,在需要时被加入内核,在不需要时也可从内核中卸载。

lf282481431的博客 2112

基于Simulink的无迹卡尔曼滤波(UKF)SOC高精度估计仿真

本文介绍了基于Simulink的无迹卡尔曼滤波(UKF)在电池SOC高精度估计中的应用。通过无迹变换替代传统EKF的线性化过程,UKF显著提升了SOC估计精度,在强非线性工况下误差可控制在0.5%以内。文章详细阐述了UKF的核心原理,包括Sigma点生成、状态预测和观测更新等关键步骤,并基于Thevenin等效电路模型构建了完整的UKF SOC估算系统。通过Simulink建模和仿真验证,展示了UKF在大电流脉冲、变温工况等复杂场景下的优异性能,其动态响应时间小于30ms,长期累积误差低于0.7%。研究为储

amy_mhd的博客 124

Linux内核模块编程入门-4(Licensing和Module Documentation)

若运行在2.4内核或后面的版本,当加载所有权模块时,或注意到有如下的内容: 在内核2.4或后面的版本,使用的机制是在GPL许可证下识别代码,以警告相关人员该代码是非开源的。这是通过MODULE_LICENSE()宏来完成的,通过设置许可证为GPL,这样可以防止打印警告信息,定义在linux/module.h。 相似的,MODULE_DESCRIPTION()用于描述模块是干什么

Second的专栏 1424

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MODULE_DEVICE_TABLE宏的作用

1. MODULE_DEVICE_TABLE (usb, skel_table); 该宏生成一个名为__mod_pci_device_table的局部变量,该变量指向第二个参数。内核构建时,depmod程序会在所有模块中搜索符号__mod_pci_device_table,把数据(设备列表)从模块中抽出,添加到映射文件/lib/modules/KERNEL_VERSION/modules.pcim...

boyemachao的专栏 1369

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

MODULE_DEVICE_TABLE

1. MODULE_DEVICE_TABLE (usb, skel_table); 该宏生成一个名为__mod_pci_device_table的局部变量,该变量指向第二个参数。内核构建时,depmod程序会在所有模块中搜索符号__mod_pci_device_table,把数据(设备列表)从模块中抽出,添加到映射文件/lib/modules/KERNEL_VERSION/modules.pci

宇宙的起源 1111

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Linux内核模块开发:模块声明详解与最佳实践

MODULE_LICENSE是唯一必须的声明,它决定了模块能使用内核的哪些功能。GPL许可证的模块可以访问所有内核符号,而专有许可证的模块会被标记为"污染内核"。平台提供了便捷的代码生成和预览功能,无需复杂环境配置就能验证模块声明效果。我实际使用时发现,通过简单的提示词就能生成完整的内核模块示例代码,特别适合初学者理解和实践。模块声明就像程序的身份证,让内核知道这个模块是谁开发的、有什么功能、遵循什么协议。当系统出现问题时,管理员可以通过modinfo命令查看模块的作者、版本等信息,快速定位问题来源。

BlackironWolf89的博客 818

【Linux内核模块】模块声明与描述

格式:MODULE_INFO(键, "值")​作用:添加自定义元信息,比如:代码语言:javascriptAI代码解释这些信息会被modinfo识别并显示,适合添加版本日期、测试状态等自定义内容。​。

2509_93923260的博客 392

Linux模块编程系列之二 熟悉特定的…

这些宏定义在下 MODULE_AUTHOR(name) 定义驱动的编程者,name为string MODULE_LICENSE(license) 定义驱动的license,一般为GPL,或相关公司的license MODULE_DESCRIPTION(desc) 对驱动程序的描述,string MODULE_SUPPORTED_DEVICE(name) 驱动程序所支持的设备,str

shangyaowei的专栏 355

驱动学习笔记(二)--------字符设备驱动基础

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 @[TOC]驱动学习----字符设备驱动基础 驱动开发步骤 (1)驱动源码编写、Makefile编写、编译 (2)insmod装载模块、测试、rmmod卸载模块 编译完成后得到了 1、内核源码树。2、编译ok的zImage 简单的模块源码分析 常用命令 (1) lsmod:list module (2) insmod:install module (3) modinfo,加xxx.ko,其中有个depends,如usb的wifi,wifi

东篱下 235

Linux SPI字符设备驱动开发(一) - 驱动模块中的宏

一、驱动模块中的宏 module_init(veb_a5_spi_init); //将veb_a5_spi_init()声明为模块的入口函数 module_exit(veb_a5_spi_exit); // 将veb_a5_spi_exit()声明为模块的退出函数 MODULE_LICENSE(“GPL”); // 模块的许可证声明。Ubuntu遵循GPL(通用公共许可证)协议,只有加上这个声明,我们写的驱动才能加载到内核中 ...

七度使徒的博客 381
上一篇: C语言函数参数传递原理
下一篇: 面向对象语言的多态性问题
计算机与认知
博客等级 码龄14年 31粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值