linux
xavier.xie
这个作者很懒,什么都没留下…
展开
-
字符驱动流程
一、字符设备驱动流程字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。 存放位置:在 /dev 目录下对应一个设备文件 分配cdev(二选一) register_chrdev_region dev_t from, unsigned count, const char * name 分配名为name,count设备号为from+co..原创 2020-12-02 20:46:29 · 547 阅读 · 0 评论 -
Linux内存管理原理及应用总结
内存的基本概念页内核将物理页作为内存管理的基本单位一般而言 32位体系结构支持页大小为4KB64位体系结构支持页大小为8KB内核中的<linux/mm_types.h>struct page结构体来描述系统中的每个物理页仅描述物理页属性,与里面保存的数据无关,所以在数据交换过程中,数据可能会更换page区由于硬件的限制一些只能被直接访问的内存由于某些体系物理寻址范围大于虚拟寻址范围,故而有一些内存无法永久的映射在内核空间故而,linux分了四个区ZON原创 2020-08-07 14:50:56 · 243 阅读 · 0 评论 -
Linux中断子系统原理及应用总结
软中断软中断简介软中断一般而言在对时间要求较高的地方使用,常见的如网络其分为八种类型API步骤函数参数意义1open_softirqint nr, void(* action)(struct softirq_action *)注册nr类型的软中断,处理函数为action2actionstruct softirq_action *中断处理函数3raise_softirqint nr触发nr类型的软中断,设为挂起状态,下次周期运行其中在软中断原创 2020-08-04 16:40:42 · 223 阅读 · 0 评论 -
Linux内核时间子系统
文章目录Linux内核时间子系统低精度定时器时钟源 clocksource时间轮Time Wheel时间维护 timekeeperAPI接口高精度定时器clock_event_device开启高精度定时器模式hirtimer工作原理API接口Linux内核时间子系统低精度定时器时钟源为jiffies,即精度为1/HZeg:HZ为1000时,时间精度为1ms基于HZ的定时器机制被称为时间轮(Time Wheel)虽然从2.6.16内核后出现了高精度定时器hirtime 但其只是一个内核可选配置原创 2020-07-27 17:19:48 · 296 阅读 · 0 评论 -
linux内核配置机制
linux内核配置机制通过将驱动放在内核源代码树中案例分析内核配置1、配置的基本结构Makefile:分布在Linux kernel根及各级目录下,定义了Linux kernel的编译规则配置文件:.config配置工具:makemenuconfig2、为什么需要配置当我们为了适应不同的平台,需要裁剪不同的内核,其中配置就可以选择我们需要的内核项,我们可以从以下两个方向进行分析2.1、从Makefile功能:静态编译(直接编译进内核)动态编译(作为模块编进内核)直接应用:原创 2020-07-22 11:36:27 · 443 阅读 · 0 评论 -
字符驱动-poll机制
字符驱动-poll机制什么是pollpoll机制基于等待队列wait_queuepoll机制:如果没有发生需要的事件,那么进程进入休眠。如果在限定的时间内得到需要的事件,那么成功返回,如果没有则返回超时错误信息#include <poll.h> int poll(struct pollfd fd[], nfds_t nfds, int timeout);struct pollfd{ int fd; //文件描述符 short even原创 2020-07-19 13:43:55 · 185 阅读 · 0 评论