关于驱动模块你需要知道的事情

关于驱动模块你需要知道的事情驱动提供机制,应用实现策略模块运行于内核空间,应用程序运行于用户空间模块运行时,分配的栈很小,注意栈溢出具有https://mp.weixin.qq.com/s?__biz=Mzg3NDkwMjc2NA==&mid=2247483782&idx=1&sn=f7bd6e71d144439eead7797d50282515&chksm=cec8e405f9bf6d133e59a194b0a34a1b146ab46364b30307b1f51609fb2a617204032b21e4a7#rd

驱动提供机制,应用实现策略

  • 模块运行于内核空间,应用程序运行于用户空间

  • 模块运行时,分配的栈很小,注意栈溢出

  • 具有两个下划线前缀(__)的函数,通常是底层组件的接口,需要谨慎使用

  • 内核符号表

公共内核符号表用于解释模块内未定义的符号,它包含了所有的全局内核项(函数和变量)的地址;导出内核符号表加以使用,可以建立模块间的依赖关系(模块层叠技术);如果一个模块需要向其他模块导出符号:

EXPORT_SYMBOL(name);      // (name必须是全局变量)符号可导出EXPORT_SYMBOL_GPL(name);  // 符号只供GPL许可证下的模块使用
  • 所有模块都包含的头文件

#include <linux/module.h> //包含大量函数和符号的定义#include <linux/init.h> //指定出入口函数#include <linux/moduleparam.h> //可选:用于定义向模块传递参数的功能
  • 指定代码许可证

MODULE_LICENSE("GPL");
  • 可使用内核定义的错误编码,做函数返回值使用。

#include <linux/errno.h>
  • 只有系统调用的名字前带有"sys_"前缀

结束语

希望本文可以帮助到大家!

欢迎大家通过后台与我交流学习心得,水平有限,如有错漏的地方请不吝指出,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值