从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响(二)
struct cdev {
struct kobject kobj;
struct module *owner;
struct file_operations *ops;
struct list_head list;
dev_t dev;
unsigned int count;
};
|
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
|
|
清单6: 同时支持2.4与2.6的输出内核符号代码段
#include <linux/module.h>
#ifndef LINUX26
EXPORT_NO_SYMBOLS;
#endif
EXPORT_SYMBOL(var);
EXPORT_SYMBOL(func);
|
|
module_param(name, type, perm)
module_param_array(name, type, nump, perm)
|
清单7: 适用于2.4与2.6内核的模块输入参数模板
#include <linux/module.h>
#ifdef LINUX26
#include <linux/moduleparam.h>
#endif
int debug = 0;
char *mode = "800x600";
int tuner[4] = {1, 1, 1, 1};
#ifdef LINUX26
int tuner_c = 1;
#endif
#ifdef LINUX26
MODULE_PARM(debug, "i");
MODULE_PARM(mode, "s");
MODULE_PARM(tuner,"1-4i");
#else
module_param(debug, int, 0644);
module_param(mode, charp, 0644);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 10)
module_param_array(tuner, int, &tuner_c, 0644);
#else
module_param_array(tuner, int, tuner_c, 0644);
#endif
#endif
|
module_param_array_named(name, array, type, nump, perm)
module_param_call(name, set, get, arg, perm)
module_param_named(name, value, type, perm)
|
清单8: 适用于2.4与2.6内核的模块许可证声明模板
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,10)
MODULE_LICENSE("GPL");
#endif
|
request_module("msp3400");
request_module("char-major-%d-%d", MAJOR(dev), MINOR(dev));
|
转载于:https://blog.51cto.com/zyg0227/270376
从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响(二)相关推荐
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响(一)
从 2.4 到 2.6:Linux 内核可装载模 块机制的改变对设备驱动的影响 <?xml:namespace prefix = o ns = "urn:schemas-microso ...
- linux 内核可装载模块 版本检查机制
为保持 Linux 内核的稳定与可持续发展,内核在发展过程中引进了可装载模块这一特性.内核可装载模块就是可在内核运行时加载到内核的一组代码.通常 , 我们会在两个版本不同的内核上装载同一模块失败,即使 ...
- linux块设备驱动编写,Linux内核学习笔记 -49 工程实践-编写块设备驱动的基础
块设备可以随机存储.字符设备,比如键盘,只能按照输入顺序存取,不可随机,打乱输入的字节流. 文件系统层,包括常见的文件系统,以及虚拟文件系统层VFS,字符设备可以直接用应用程序打开.块设备不会在应用程 ...
- linux内核可装载模块(lkm)传参机制 module_param()/module_param_string()
对于如何向模块传递参数,Linux kernel 提供了一个简单的框架.其允许驱动程序声明参数,并且用户在系统启动或模块装载时为参数指定相应值,在驱动程序里,参数的用法如同全局变量. 使用下面的宏时需 ...
- linux kernel and user space通信机制,Linux内核与用户空间通信机制研究.pdf
ISSN 1009-3044 E-mail:info@CCCC.net.CR ComputerKnowledgeandTechnology电脑知识与技术 http://www.dnzs.net.cn ...
- 【Linux 内核】宏内核与微内核架构 ( 操作系统需要满足的要素 | 宏内核 | 微内核 | Linux 内核动态加载机制 )
文章目录 一.操作系统需要满足的要素 二.宏内核 三.微内核 四.Linux 内核动态加载机制 一.操作系统需要满足的要素 电脑上运行的 操作系统 , 是一个 软件 ; 设备管理 : 操作系统需要 为 ...
- Linux内核中的platform机制
Linux内核中的platform机制 从Linux 2.6起引入了一套新的驱动管理和注册机制:platform_device和platform_driver.Linux中大部分的设备驱动,都可以使用 ...
- 自学Linux 2—Linux 的系统架构之 Linux 内核的主要模块和 Linux 的文件结构
Linux 的系统架构 Linux 系统从应用角度来看,分为内核空间和用户空间两个部分. 内核空间是 Linux 操作系统的主要部分,但是仅有内核的操作系统是不能完成用户任务的.丰富并且 ...
- Linux内核如何装载和启动一个可执行程序-----实验7
2015108 李泽源 Linux内核如何装载和启动一个可执行程序 理解编译链接的过程和ELF可执行文件格式,详细内容参考本周第一节: 编程使用exec*库函数加载一个可执行文件,动态链接分为可执行程 ...
- linux 信号优先级,linux内核中的信号机制
linux内核中的信号机制--信号处理 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.csdn.net ...
最新文章
- three.js(六) 地形法向量生成
- 怎样才能使二级网页窗口最大化
- 如何理解Excel数组公式{=sum(1/countif(B8:K9,B8:K9))}
- 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
- how is crmd_product_i inserted to db
- C#全能数据库操作类及调用示例
- 揭秘 | 小米最新款12PRO智能动态刷新率技术原理
- oracle19c连接MySQL_oracle19c的安装和使用navicat连接oracle数据库
- Docker中快速安装Mysql
- ubuntu查看oracle客户端,ubuntu 9.04 下安装 oracle 客户端oracle-xe-client
- POJ 3254 Corn Fields [DP]
- github连接出现Bad file number问题
- macOS Monterey兼容哪些Mac电脑?
- 什么吃掉了你的执行力?在浮躁中求解
- MATLAB对ply文件格式的读取和显示
- mysql查询计算机系信息_mysql——查询练习
- 淘东电商项目(14) -公众号获取注册码功能
- python画图柱状图修改相邻两个柱之间的间隔
- Web3策展生态解读:谁是互联网文明的策展人?
- matlab 1.封装LPF 巴特沃斯低通滤波器
热门文章
- 码支付如何对接网站_做“刷脸支付”怎么推广?怎么办理刷脸支付POS机?
- python一维数组聚类
- Android Listview设置每条信息的间距
- 【安装包】gcc编译器
- MySQL优化(二)
- 遇到Io阻塞时会切换任务之【爬虫版】
- shell编程的for和while循环
- mongo 监听指定语句
- 【OpenCV入门教程之二】 一览众山小:OpenCV 2.4.8 or OpenCV 2.4.9组件结构全解析(转)...
- Swift - 通过url地址打开web页面