linux内核编程,实现内核之间的调用
Linux 内核模块编写三个模块文件mainmod.c,lenmod.c,summod.c,在mainmod模块调用summod模块对数组进行求和运算,调用lenmod模块求数组中元素
1 先看自己的内核版本:
2 检查链接
3
4
首先,普通的内核模块的编写:
1.先建立hello文件
2.在hello文件中编写hello.c文件
3.编写Makefile文件
注意标红处的名字
4.编译
运行
可以看到已经打印出来了
卸载
5
现在回归标题
1.我们要建立三个文件,mainmod,summod和lenmod(要到目录下)
2.我们要知道是mainmod调用summod和lenmod,所以我们要先完成summod和lenmod的编译才能进行mainmod的编译,而且我们要先运行summod和lenmod然后才能运行mainmod
3.summod文件下的编写
3.1 sum.c 文件的编写:
首先我们可以看到比普通的多出了三个标红的地方,前两个我就不说了,大家都是学计算机的,这些看不懂的话就有点那个说不过去了,我们看第三个,我个人的理解就是导出这个函数到我这个文件的参数表中,然后让别人可以进行调用.一会可以看下mainmod中Makefile文件的编写
3.2 makefile文件的编写:
3.3 编译
4.lenmod文件下
4.1 len.c文件的编写(和sum.c大同小异)
4.2 Makefile文件的编写
4.3 编译
5.mainmod文件下的编写
5.1 main.c文件的编写
注意标红处,因为我需要调用那两个函数,所以我需要从参数表中导入这两个函数.那么我mainmod的参数表就必须要引入那两个文件的参数表,这也就是为啥我们下面的Makefile要那样编写
5.2Makefile文件的编写
5.3编译
6验证
len.ko和sum.ko的执行顺序随意,但必须最后是main.ko,关闭的顺序相反:
结果:
欢迎提问,目前我会时不时的关注博客,也可以尽快的回复
linux内核编程,实现内核之间的调用相关推荐
- linux内核编程_内核线程kthread_run
linux内核编程_内核线程kthread_run 1. 简述: 2. 使用示例: 3. 详述: 1. 简述: 头文件: include/linux/kthread.h 数据类型: struct ta ...
- linux 应用层编程之内核链表list的使用
linux内核提供了一个经典通用的双向循环链表list的实现,任何模块都可以借助该接口实现自己的内部循环链表.因为是通用的,可以直接移植到用户态中使用,下面介绍相关的接口与一个简单操作例子,包括链表的 ...
- Win64 驱动内核编程-8.内核里的其他常用
内核里的其他常用 1.遍历链表.内核里有很多数据结构,但它们并不是孤立的,内核使用双向链表把它们像糖 葫芦一样给串了起来.所以遍历双向链表能获得很多重要的内核数据.举个简单的例子,驱 动对象 Driv ...
- Win64 驱动内核编程-3.内核里使用内存
内核里使用内存 内存使用,无非就是申请.复制.设置.释放.在 C 语言里,它们对应的函数是:malloc.memcpy.memset.free:在内核编程里,他们分别对应 ExAllocatePool ...
- Win64 驱动内核编程-6.内核里操作注册表
内核里操作注册表 RING0 操作注册表和 RING3 的区别也不大,同样是"获得句柄->执行操作->关闭句柄"的模式,同样也只能使用内核 API 不能使用 WIN32 ...
- Win64 驱动内核编程-5.内核里操作文件
内核里操作文件 RING0 操作文件和 RING3 操作文件在流程上没什么大的区别,也是"获得文件句柄->读/写/删/改->关闭文件句柄"的模式.当然了,只能用内核 A ...
- Win64 驱动内核编程-4.内核里操作字符串
内核里操作字符串 字符串本质上就是一段内存,之所以和内存使用分开讲,是因为内核里的字符串太有花 样了,细数下来竟然有 4 种字符串!这四种字符串,分别是:CHAR*.WCHAR*.ANSI_STRIN ...
- Windows内核编程(三)-内核驱动运行与调试
内核驱动运行与调试 驱动的运行 驱动的运行通过服务来实现. 微软规定,驱动文件必须经过微软的数字签名后,才可以运行在64位系统上,如果把没有经过签名的驱动直接放在64位操作系统中运行,结果是驱动加载失 ...
- Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础
Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...
最新文章
- new 数组_编程-遍历数组元素N次/填充数组至指定长度
- 硕博就业:引进博士40万;硕士20万;本科15万
- 单片机C语言知识用法之,单片机C语言知识用法之define
- 【Qt】打开现有 Qt 项目 ( 打开已存在的项目 | 运行打开的项目 )
- python中的成员运算符_在Python中使用成员运算符的示例
- android系统的发展态势,2020年安卓手机发展的7个趋势,只有延伸,并无革命性的变化...
- 介绍一个小技巧,如何实现ssh免密登录
- iOS开发篇——C++函数模板介绍
- 佳能mf4400打印机无线服务器,佳能mf4400打印机驱动
- js输入银行卡号,自动查询银行名称、银行卡类型
- 九八k用计算机打出来的音乐,背景音乐大全
- 旧苹果电脑安装win10 双系统
- 《认知突围:做复杂时代的明白人》感想
- 怎样清理苹果手机内存空间_你还不知道?苹果手机这样清理垃圾,轻松腾出10G内存!...
- 2021运维岗位现在薪资行情-大家运维都在薪资范围?
- 前端大串讲,狂神,狂神和飞哥
- 决策树预测音乐喜好(弱)
- 神奇的H5视频画中画功能
- BenchmarkSQL配置参数介绍
- Javascript清除IE缓存