《Linux课本》读书笔记 第十七章 模块
设备与模块:
设备类型:块设备(blkdev)、字符设备(cdev)、网络设备;
模块:
分析hello,world模块代码。Hello_init是模块的入口点,通过module_init()注册到系统中,在内核装载时被调用,是一个宏调用,唯一的参数是模块的初始化函数。模块初始化函数格式:int my_init(void);,可标记为static类型。初始化成功,返回值为0,不成功返回一个非零值。Init函数还会注册资源、初始化硬件、分配数据结构等。
hello_exit()函数是模块的出口函数,它由module_exit()例程注册到系统,在模块从内存卸载时,内核会调用hello_exit()。退出函数必须符合以下形式:void my_exit(void);MODULE_LICENSE()和MODULE_AUTHOR()都是模块的简要描述。
构建模块:
1、放在内核源代码树中(这个不详细介绍)
2、放在内核代码外:
在自己的源代码树目录中建立一个Makefile文件,只需要一行指令:obj-m := xx.o(如果有多个源文件,则用obj-m := xx.o xx-objs := xx-main.o xx-line.o),编译生成xx.ko。同时,还要告诉make如何找到内核源码文件和基础Makefile文件:make –C /kernel/source/location SUBDIRS=$PWD modules
安装模块:make
载入模块:insmod xx.ko
卸载模块:rmmod xx.ko
模块参数:module_param(name,type,perm);
导出符号表:EXPORT_SYMBOL()和EXPORT_SYMBOL_GPL().导出的内核符号表被看做导出的内核接口,甚至称为内核API。
设备模型:
Kobject(kernel object)由struct kobject结构体。Kobject是可以创建对象的层次结构。Ktype是kobject对象被关联到一种特殊的类型。Ktype的存在是为了描述一族kobject所具有的普遍特性。Kset是kobject对象的集合体。Kobject、kytpe、kset三者的关系:kobject与一个特别的ktype对象关联,kobject归入称为kset的集合。
管理和操作kobject:
Kobject通过函数kobject_init进行初始化, 接下来调用kobject_create()创建kobject。
引用计数:
Kobject的主要功能就是提供一个统一的引用计数系统。
Sysfs:
Sysfs文件系统是一个处于内存中的虚拟文件系统,为我们提供kobject对象的层次结构的视图。
《Linux课本》读书笔记 第十七章 模块的更多相关文章
- 20135337——Linux内核分析:第十七章 模块与设备
第17章 模块与设备 设备类型:在所有 Unix 系统中为了统一普通设备的操作所采用的分类. 模块: Linux 内核中用于按需加载和卸载目标码的机制. 内核对象:内核数据结构中支持面向对象的简单操作 ...
- 《Linux内核设计与实现》读书笔记 第十七章 设备与模块
一.设备类型 1. Unix系统 - 块设备 - 字符设备 - 网络设备 2. 块设备 通常缩写为blkdev,它是可寻址的,寻址以块为单位,块大小随设备不同而不同:块设备通常支持重定位操作,也就是对 ...
- 《linux内核设计与实现》读书笔记第十七章
第17章 设备与模块 四种内核成分 设备类型:在所有 Unix 系统中为了统一普通设备的操作所采用的分类. 模块: Linux 内核中用于按需加载和卸载目标码的机制. 内核对象:内核数据结构中支持面向 ...
- 《Linux内核》课本读书笔记 第三章
- 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度
<Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...
- 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度
20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...
- 《Linux内核分析》读书笔记(四章)
<Linux内核分析>读书笔记(四章) 标签(空格分隔): 20135328陈都 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行 ...
- 《LINUX内核设计与实现》第三周读书笔记——第一二章
<Linux内核设计与实现>读书笔记--第一二章 20135301张忻 估算学习时间:共2小时 读书:1.5 代码:0 作业:0 博客:0.5 实际学习时间:共2.5小时 读书:2.0 代 ...
- 《Linux内核设计与实现》第四周读书笔记——第五章
<Linux内核设计与实现>第四周读书笔记--第五章 20135301张忻 估算学习时间:共1.5小时 读书:1.0 代码:0 作业:0 博客:0.5 实际学习时间:共2.0小时 读书:1 ...
随机推荐
- emacs org-mode文件转html文件
Table of Contents 1. 发布站点 by emacs org-mode 1.1 org-mode 自带的导出方法 1.2 批量导出 1.3 css 美化 1.4 导出html 1. 发 ...
- DAG 模型 stacking boxes 动态规划
题目:UVA 103 stacking boxes 题目大意: 给你两个数,一个是盒子的个数,一个是每一个盒子的维数.将一个个盒子互相装起来,让你求最多可以装多少个,要求字典序最小. 解析:这个就是盒 ...
- CF 633 E. Binary Table
题目链接 题目大意:给定一个棋盘,棋盘上有0或1,你可以将一整行取反或者一整列取反,要使得最后剩的1最少.\((1\le n\le 20,1\le m\le 100000)\). 一个容易想到的思路就 ...
- centos断网调试
保存命令 按ESC键 跳到命令模式,然后: :w 保存文件但不退出vi:w file 将修改另外保存到file中,不退出vi:w! 强制保存,不推出vi:wq 保存文件并退出vi:wq! 强制保存文件 ...
- go标准库的学习-net/rpc
参考:https://studygolang.com/pkgdoc 导入方法: import "net/rpc" RPC(Remote Procedure Call Protoco ...
- 一加将在欧洲推出第一款商用 5G 手机
远在太平洋中部的夏威夷群岛,高通举办了骁龙峰会. 峰会的惯例,各行业的合作伙伴都被邀请上台演讲.中国企业里,去年来的是小米雷军,而今年刚开场,一加手机 CEO 刘作虎就现身了. 与以往一样,张老板身着 ...
- python 打印 emoji
python 打印 emoji 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10486506.html 一.Unicode字符集: ...
- Android学习之多触点滑动
知识点: 1.对矩阵:Matrix类熟悉,链接:https://blog.csdn.net/jdsjlzx/article/details/52741445 2.MotionEvent详解:https ...
- CF1097F Alex and a TV Show 莫比乌斯反演、bitset
传送门 发现自己对mobius反演的理解比较浅显-- 首先我们只需要维护每一个数的出现次数\(\mod 2\)的值,那么实际上我们只需要使用\(bitset\)进行维护,每一次加入一个数将其对应次数异 ...
- React-组件 & Props
React元素可以只是DOM标签 const element = <div />; React元素也可以是用户自定义的组件: const element = <Welcome nam ...