代码编织梦想

1、字符驱动模型

1)创建cdev

2) 申请设备号,若使用静态的设备号,查看内核文档Documentation/devices.txt;

3)实现file_operation

  read

   write

  ioctl

   定义魔术,查看ioctl-number.txt,已经使用的魔术

   定义命令

常用函数

copy_to_user(void *dst,void*src,size_t len);

copy_from_user(void*dst,void*src,size_t len);

4)创建设备文件

  cat /proc/devices 查看当前系统注册的设备

a.手动创建 mknode /dev/testchar c major minor

可以通过cat /proc/devices查看主设备号,从源码中找到次设备号;

b.自动创建

 首先,需要在编译内核时候,在 Device Drivers-->

                                                 Generic Driver Options--->

                                                                 [*] Maintain a devtmpfs

                                                                  [*] Automount devtmpfs

或者 制作根文件系统的启动脚本中输入

  mount -t sysfs none sysfs /sys

mdev -s

 其次,在加载设备的将设备信息导出到“/sys”

在 /sys 中导出设备类信息

cls = class_create(THIS_MOUDLE,DEV_NAME);

/在cls指向类中创建一组(个)设备文件

fori(i=minor;i<(minor+cnt);i++)

devp = device_create(cls,NUll,MKDEV(major,i),NULL,"%s%d",DEV_NAME,i)

2、按照以上要点,一个简单的字符设备驱动就搭建完成了。

这样就可以编写用户程序进行测试。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/smartresister/article/details/111086146

Linux 内存管理 | 虚拟内存管理:虚拟内存空间、虚拟内存分配-爱代码爱编程

文章目录 虚拟内存空间用户空间内核空间用户空间内存分配malloc内核空间内存分配kmallocvmalloc Linux 内存管理 | 物理内存管理:内存碎片、伙伴系统、slab分配器 在上一篇博客中我介绍了Linux中对于物理内存的管理方式,这次再来介绍一下Linux对虚拟内存的管理方式 虚拟内存空间 即使是在现代,内存依旧是一项宝贵的

Ubuntu qemu调试linux内核-调试linux内核-爱代码爱编程

准备工作 提前准备好符号文件 配置根文件系统 根文件系统也是一个文件系统,主要是用于linux启动的时候在内存中加载,并执行第一个启动程序init。 所以思路: 1、创建init可执行文件init 创建init.c并写入如下代码 #include <stdio.h> void main(){ printf("Hello

操作系统原理实验(四)深渊:竞争条件与死锁(硬件中断)-爱代码爱编程

硬件中断 中断控制器启动中断处理定时器中断死锁竞争条件HLT指令键盘输入 中断控制器 中断提供了一种从附加硬件设备通知CPU的方法。这个英特尔8259是1976年推出的可编程中断控制器(PIC)。8259具有8条中断线和几条用于与CPU通信的线路。一个主PIC和一个从PIC连接到主系统的一条中断线上,一共15个端口。 pics的默认配置不可

操作系统原理实验(三)操作系统的基石:中断与异常(内核测试,异常,双重故障)-爱代码爱编程

内核测试,异常,双重故障 内核测试在rust中测试退出 QEMU打印到控制台测试 VGA 缓冲区集成测试CPU异常实现加载 IDT双重故障什么是双重错误?双重故障处理器双重故障的原因切换堆栈堆栈溢出测试 内核测试 在rust中测试 Rust 具有内置测试框架,能够运行单元测试。只需创建一个函数,将属性添加到函数标头。然后将自动查找并执行您的

性能分析Linux服务器CPU利用率-爱代码爱编程

1.  指标范围 1.1  User mode CPU utilization+ System mode CPU utilization 合理值:60-85%,如果在一个多用户系统中us+sy时间超过85%,则进程可能要花时间在运行队列中等待,响应时间和业务吞吐量会受损害;us过大,说明有用户进程占用很多cpu时间,需要进一步的分析其它软硬件因素;sy