内核模块可选信息

前一次讲的三个要素是编写内核模块必不可少的三个信息,今天讲的这些是可选信息,可写可不写。
  一、模块申明
    MODULE_LICENSE("GPL");                            声明模块遵守的协议
    MODULE_AUTHOR("Bumble Bee");                声明模块编写的作者
    MODULE_DESCRIPTION("print helloworld");  声明模块的功能
    MODULE_VERSION("1.0");                             声明模块版本
  二、模块参数
    通过宏module_param(name,type,perm)来声明。其中name为变量名,type为变量类型,perm未访问权限。变量类型有
int,bool,charp三种;访问权限有S_IRUGO(读)、S_IWUSR(写)两种。用法如下:

    

    在安装内核模块时就可以输入参数了

    

  三、符号导出
           
当一个模块调用另外一个模块中实现的函数时需要用到这个。例如现在有两个模块,一个helloworld.ko,一个add.ko。在add模块中实现了
一个add函数,想要在helloworld模块中调用它,如果不进行符号导出的话就会出现这样的错误。  

    

    提示找不到add这个函数符号。所以在add.c中要加入符号导出,即EXPORT_SYMBOL(函数名)。

    

    在helloworld.c中要将add函数外部输出

    

    这样就可以在helloworld.ko内核模块中调用add.ko模块中的变量了。

    

时间: 2024-10-05 04:33:45

内核模块可选信息的相关文章

Linux 内核模块可选信号

一 . 内核模块可选信号 1 . 模块申明 (1). MODULE_LICENSE(遵守的协议) 申明该模块遵守的许可证协议,如:“GPL”."GPL V2" (2). MODULE_AUTHOR(作者) 申请模块的作者 (3). MODULE_DESCRIPTION(模块的功能描述) 申请模块的功能 (4). MODULE_VERSION(v1.0) 申请模块的版本 2 . 模块参数 通过宏module_param指定保存模块参数的变量.模块参数用于在加载模块时传递参数给模块. mo

linux内核模块开发

一,内核模块功能: 让内核文件(zImage或bzImage)本身并不包含某组件,而是在该 组件需要被使用的时候,动态地添加到正在运行的内核中 二,内核模块安装和卸载加载:insmod (insmod hello.ko)卸载:rmmod (rmmod hello)查看:lsmod加载:modprobe (modprobe hello)modprobe如同insmod,也是加载一个模块到内核.它的不同之处在于它会根据文件/lib/modules/<$version>/modules.dep来查看

linux内核模块相关命令:lsmod,depmod,modprobe,modinfo,insmod,rmmod 使用说明

加载内核驱动的通常流程: 1.先将.ko文件拷贝到/lib/module/`uname -r`(内核版本号)/kernel/driver/...目录下, 根据具体用途的区别分为net.ide.scsi.usb.video.parport.md.block.ata等等. 2.运行depmod -a,更新模块依赖新,主要是更新modules.dep文件 3.运行modprobe加载内核模块 lsmod 功能:列出内核已载入模块的状态 用法:lsmod 描述: lsmod 以美观的方式列出/proc/

JS实现信息的显示和隐藏

JS实现信息的显示和隐藏 我们在写注册页面的时候,必填信息是可见的,可选信息是隐藏的,如果用户希望填写,可以单击“详细信息”. 代码如下:<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><script type="text/javascript">    function

PHP下处理HTTP--json--xml信息

最近在开发微信公众号,也算对抓包,HTML,XML,JSON等概念有些了解. 在此总结一下,方便大家交流. 首先有个直观认识: 开发中xml与json,http协议与 socket技术分别有什么区别? 1)XML 和JSON是两种完全不同的数据表达方式.他们分别采用完全不同格式将原始数据转换成XML或者JOSN格式数据:然后再将XML或JOAN格式的数据还原为原始数据2)Socket是用来编写TCP/IP或UDP/IP通信程序的:HTTP是使用TCP/IP的“应用层协议”,HTTP协议利用(借助

Linux 内核模块查看命令

ldd命令 显示应用程序(二进制程序)所依赖的库文件 lsmod 显示当前被内核加载的模块 也可以通过cat /proc/modules命令查看 modinfo 查看内核模块的信息,包括开发人员信息,依赖信息 modprobe 向内核增加或者删除指定模块 默认是增加模块 -r 删除模块 再卸载btrfs模块 depmod 生成依赖关系 内核模块依赖文件生成工具 insmod/rmmod insmod 向内核加载模块 必须完整给出模块文件路径 可以通过modinfo获取 rmmod 在内核中删除模

linux内核编译与开发

一.Linux内核简介linux kernel map: linux 系统体系结构: linux kernel体系结构: arm有7种工作模式,x86也实现了4个不同级别RING0-RING3,RING0级别最高, 这样linux用户代码运行在RING3下,内核运行在RING0,这样系统本身就得到了 充分的保护 用户空间(用户模式)转到内核空间(系统模式)方法: ·系统调用 ·硬件中断 linux kernel 体系结构: 虚拟文件系统VFS: VFS(虚拟文件系统)隐藏各种文件系统的具体细节,

gnome出现问题,重新安装nvdia驱动

重新安装显示gtx745驱动NVIDIA-Linux-x86_64-346.59.run, yum groupremove kde-desktop yum groupinstall "Desktop" yum groupinstall "X Window System" yum groupinstall "Chinese Support" CentOS 5.x 與 6.x 套件組的名稱不太一樣,例如桌面環境套件: CentOS 5.x: GNOM

《Linux命令应用大词典》一书,讲述729个命令,1935个例子

<Linux命令应用大词典>涵盖了Linux系统常用的命令,内容涉及基础入门.系统管理.网络管理.网络安全.服务器配置和程序编译等多方面,共计729个命令,1935个例子,内容非常全面.每一个命令都讲述了它的功能描述.命令语法.选项含义和命令实例,内容清晰明了,正所谓一书在手,万事不愁. <Linux命令应用大词典>可以作为读者学习Linux系统的参考书.案头书,遇到不懂的命令或命令选项一查即可:适合Linux爱好者.Linux系统管理工程师.培训机构教师和学生以及高等院校计算机专