欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Linux编程之内核模块编程.pdf

    • 资源ID:70344160       资源大小:2.79MB        全文页数:13页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Linux编程之内核模块编程.pdf

    H He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up pLinux编程之2 内核模块编程(LKM)H He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up p什么是LKMLKM:就是可加载的内核模块(LoadableKernel Module)。这中模块本来是Linux系统用于扩展他的功能的。使用LKM的优点有:他们可以被动态的加载,而且不需要重新编译内核。由于这些优点,他们常常被特殊的设备(或者文件系统),例如声卡,网卡,romfs等使用。H He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up pLKM 的基本结构int hello_init(void)/*用于初始化所有的数据,函数名可以自定义*/void hello_exit(void)/*用于清除数据从而能有一个安全的退出,函数名可自定义*/module_init(hello_init);/*加载模块*/module_exit(hello_exit);/*卸载模块*/H He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up pLKM的头文件(include)头文件的位置:/usr/src/linux-2.6.x/include/一个模块所必需的头文件:#include#include 其它头文件H He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up p最简单的LKM/*hello.c*/#include#include static int hello_init(void)/*用于初始化*/printk(KERN_ALERT Hello,worldn);return 0;static void hello_exit(void)/*用于清除从而能安全退出*/printk(KERN_ALERTGoodbye worldn);MODULE_LICENSE(GPL);module_init(hello_init);/*加载模块*/module_exit(hello_exit);/*卸载模块*/H He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up pLKM的编译准备编译的准备工作:1.与此时运行的内核版本一致的内核源代码一套将其解压放置到/usr/src/目录下,下载网站:http:/www.kernel.org/pub/linux/kernel/v2.6/2.make工具make在执行时,需要一个命名为Makefile的文件。这个文件告诉make以何种方式编译源代码和链接程序。(2.6下内核模块编译必须是Makefile)H He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up pLKM的Makefile文件与编译Makefile文件的位置:与编写的LKMc文件放在同一个目录中。编写:obj-m:=hello.okernel_path=/home/xux/linux-2.6all:make-C$(kernel_path)M=$(PWD)modulesclean:make-C$(kernel_path)M=$(PWD)clean编译:makeH He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up pLKM的使用工具http:/www.kernel.org/pub/linux/utils/kernel/module-init-tools/insmod hello.koModinfo hello.kormmod hellomodprobeH He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up p内核模块中的宏(1)#define _init_section(.init.text)_cold notrace#define _exit_section(.exit.text)_exitused _coldcompiler.h:#define _section(S)_attribute_(_section_(#S)H He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up p内核模块中的宏(2)MODULE_LICENSE(_license)MODULE_AUTHOR(_author)MODULE_DESCRIPTION(_description)MODULE_VERSION(_version)H He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up p内核模块中的宏(3)module_param(name,type,perm)Name:变量名Type:byte,short,ushort,int,uint,long,ulong,charp,bool or invbool,perm:变量权限H He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up p多个模块的编译C文件:hello.c,hello2.c,hello3.c.obj-m:=hello.oobj-m:=hello2.oobj-m:=hello3.okernel_path=/home/xux/linux-2.6all:make-C$(kernel_path)M=$(PWD)modulesclean:make-C$(kernel_path)M=$(PWD)cleanH He el li ig gh ht t.X Xu u X Xi iy yo ou u L Li in nu ux xG Gr ro ou up p多个C文件编译一个模块C文件:hello1.c hello2.c目标模块:hello.koobj-m:=hello.ohello-y:=hello1.o hello2.okernel_path=/home/xux/linux-2.6all:make-C$(kernel_path)M=$(PWD)modulesclean:make-C$(kernel_path)M=$(PWD)clean

    注意事项

    本文(Linux编程之内核模块编程.pdf)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开