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内核编程,实现内核之间的调用相关推荐

  1. linux内核编程_内核线程kthread_run

    linux内核编程_内核线程kthread_run 1. 简述: 2. 使用示例: 3. 详述: 1. 简述: 头文件: include/linux/kthread.h 数据类型: struct ta ...

  2. linux 应用层编程之内核链表list的使用

    linux内核提供了一个经典通用的双向循环链表list的实现,任何模块都可以借助该接口实现自己的内部循环链表.因为是通用的,可以直接移植到用户态中使用,下面介绍相关的接口与一个简单操作例子,包括链表的 ...

  3. Win64 驱动内核编程-8.内核里的其他常用

    内核里的其他常用 1.遍历链表.内核里有很多数据结构,但它们并不是孤立的,内核使用双向链表把它们像糖 葫芦一样给串了起来.所以遍历双向链表能获得很多重要的内核数据.举个简单的例子,驱 动对象 Driv ...

  4. Win64 驱动内核编程-3.内核里使用内存

    内核里使用内存 内存使用,无非就是申请.复制.设置.释放.在 C 语言里,它们对应的函数是:malloc.memcpy.memset.free:在内核编程里,他们分别对应 ExAllocatePool ...

  5. Win64 驱动内核编程-6.内核里操作注册表

    内核里操作注册表 RING0 操作注册表和 RING3 的区别也不大,同样是"获得句柄->执行操作->关闭句柄"的模式,同样也只能使用内核 API 不能使用 WIN32 ...

  6. Win64 驱动内核编程-5.内核里操作文件

    内核里操作文件 RING0 操作文件和 RING3 操作文件在流程上没什么大的区别,也是"获得文件句柄->读/写/删/改->关闭文件句柄"的模式.当然了,只能用内核 A ...

  7. Win64 驱动内核编程-4.内核里操作字符串

    内核里操作字符串 字符串本质上就是一段内存,之所以和内存使用分开讲,是因为内核里的字符串太有花 样了,细数下来竟然有 4 种字符串!这四种字符串,分别是:CHAR*.WCHAR*.ANSI_STRIN ...

  8. Windows内核编程(三)-内核驱动运行与调试

    内核驱动运行与调试 驱动的运行 驱动的运行通过服务来实现. 微软规定,驱动文件必须经过微软的数字签名后,才可以运行在64位系统上,如果把没有经过签名的驱动直接放在64位操作系统中运行,结果是驱动加载失 ...

  9. Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础

    Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...

最新文章

  1. new 数组_编程-遍历数组元素N次/填充数组至指定长度
  2. 硕博就业:引进博士40万;硕士20万;本科15万
  3. 单片机C语言知识用法之,单片机C语言知识用法之define
  4. 【Qt】打开现有 Qt 项目 ( 打开已存在的项目 | 运行打开的项目 )
  5. python中的成员运算符_在Python中使用成员运算符的示例
  6. android系统的发展态势,2020年安卓手机发展的7个趋势,只有延伸,并无革命性的变化...
  7. 介绍一个小技巧,如何实现ssh免密登录
  8. iOS开发篇——C++函数模板介绍
  9. 佳能mf4400打印机无线服务器,佳能mf4400打印机驱动
  10. js输入银行卡号,自动查询银行名称、银行卡类型
  11. 九八k用计算机打出来的音乐,背景音乐大全
  12. 旧苹果电脑安装win10 双系统
  13. 《认知突围:做复杂时代的明白人》感想
  14. 怎样清理苹果手机内存空间_你还不知道?苹果手机这样清理垃圾,轻松腾出10G内存!...
  15. 2021运维岗位现在薪资行情-大家运维都在薪资范围?
  16. 前端大串讲,狂神,狂神和飞哥
  17. 决策树预测音乐喜好(弱)
  18. 神奇的H5视频画中画功能
  19. BenchmarkSQL配置参数介绍
  20. Javascript清除IE缓存

热门文章

  1. 区块链未来的发展前景是什么?
  2. 《Springer》宣布免费对外开放的书籍下载
  3. 简单有趣,半小时漫画中国史
  4. 网络漫画书市场现状研究分析报告-
  5. FE!FE!面板固定效应模型:你用对了吗
  6. linux查看内存命令(查看进程虚拟内存)free命令、vmstat命令、pmap命令(free指令、vmstat指令、pmap指令)
  7. linux(xshell的安装与使用)
  8. Java IO BIO NIO
  9. java算法--冒泡算法
  10. java super.clone解释_super.clone()做了什么