![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux驱动
谨笃行之
新手驾到
展开
-
继续编写简单的linux模块 hello
1、通过包含linux/sched.h头文件#include <linux/sched.h>可以使用下面的语句打印当前进程的进程 ID 和命令名:printk(KERN_INFO "The process is \"%s\" (pid %i)\n", current->comm, current->pid);hello.c#include <...原创 2019-02-22 09:23:09 · 234 阅读 · 0 评论 -
Linux模块初始化中的错误处理
在注册内核模块时,注册可能失败,此时模块应该具有处理异常的能力:如果证实你的模块在一个特别类型的失败后完全不能加载,你必须取消任何在失败前注册的动作,这里采用goto语句:int __init my_init_function(void){ int err; err = register_this(ptr1, "skull"); /* registration takes...原创 2019-02-22 11:21:01 · 591 阅读 · 0 评论 -
编写hello模块的升级版:带参数的模块 hellop
增加 2 个参数: 一个整型值,称为 howmany,一个字符串称为 whom。新模块在加载时,欢迎 whom 不止一次,而是 howmany 次。参数用 moudle_param 宏定义来声明,它定义在 linux/moduleparam.h。module_param 使用了 3 个参数: 变量名, 它的类型(不支持浮点型), 以及一个权限掩码用来做一个辅助的 sysfs 入口. 这...原创 2019-02-22 16:06:29 · 474 阅读 · 0 评论 -
编写一个简单的linux模块 hello
今天看着《Linux设备驱动程序》,跟着编写一个简单的hello模块:hello.c#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_INFO "Hello, w...原创 2019-02-21 11:22:51 · 857 阅读 · 0 评论 -
字符驱动之设备编号
scull 是一个字符驱动,像操作一个设备一样地操作一块内存区域。scull 的优势在于它不依赖硬件;它只操作一些从内核分配的内存。1scull 的设计 编写驱动的第一步是定义驱动将要提供给用户程序的能力(机制)。因为我们的"设备"是计算机内存的一部分,所以可自由做我们想做的事情。它可以是一个顺序的或者随机存取的设备, 一个或多个设备, 等等.2 主次编号 ...转载 2019-03-28 10:02:13 · 286 阅读 · 0 评论