![](https://img-blog.csdnimg.cn/2019102604225429.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux Kernel
文章平均质量分 83
Wu_Being
这个作者很懒,什么都没留下…
展开
-
Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc的区别【转】
我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free()。注意:动态申请的内存使用完后必须要释放,否则会造成内存泄漏,如果内存泄漏发生在内核空间,则会造成系统崩溃。 那么,在内核空间中如何申请内存呢?一般我们会用到 kmalloc()、kzalloc()、vmalloc() 等,下面我们介绍一下这些函数的使用以及它们之间的区别。...转载 2022-06-05 19:19:43 · 231 阅读 · 0 评论 -
Linux 的中断
文章目录中断概念和分类Linux 中断处理程序架构Linux 中断编程申请和释放中断使能和屏蔽中断底半部机制1. tasklet2.工作队列3.软中断4. threaded irq中断概念和分类中断是指 CPU 在执行程序的过程中,出现了某些突发事件急待处理, CPU 必须暂停当前程序的执行,转去处理突发事件,处理完毕后又返回原程序被中断的位置继续执行。根据中断的来源,中断可分为内部中断和外部中断,内部中断的中断源来自 CPU 内部(软件中断指令、溢出、除法错误等,例如,操作系统从用户态切换到内核态原创 2022-05-30 00:32:39 · 7871 阅读 · 0 评论 -
Linux 阻塞和非阻塞I/O
阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进人睡眠状态,被从调度器的运荷队列移走,直到等待的条件被满足。非阻塞操作的进程在不能进行设备操作时,并不挂起,它要么放弃,要么不停地查询,直至可以进行操作为止。在阻塞访问时,不能获取资源的进程将进人休眠,它将 CPU 资源“礼让”给其他进程。因为阻塞的进程会进入休眠状态,所以必须确保有个地方能够唤醒休眠的进程,否则,进程就真的“寿终正寝”了。唤醒进程的地方最大可能发生在中断里面,因为在硬件资源获得的同原创 2022-05-25 17:12:47 · 764 阅读 · 0 评论 -
Makefile和Kconfig配置项目——Input子系统fingerprint
RTFSC – Read The Fucking Source Code Fucking在这里难道完全就是语气词?当然不是这么肤浅。 RTFSC 一词 生动形象的体现了阅读源代码的艰难和重要性。 Linux的鼻祖Linus Torvalds在回答有人提出的Minix的一个问题时,所说的第一句话就是”Read The Fucking Source Code”,这就是RTFSC的来由。原创 2017-10-30 16:55:48 · 935 阅读 · 0 评论 -
输入设备驱动子系统
输入设备驱动输入设备(如按键、键盘、触摸屏、鼠标等)是典型的字符设备。工作机理 是底层在按键、触摸等动作发送时产生一个中断(或驱动通过 Timer 定时查询),然后 CPU 通过 SPI 、 I2C 或外部存储器总线读取键值、坐标等数据,并将它们放人一个缓冲区,字符设备驱动管理该缓冲区,而驱动的 read() 接口让用户可以读取键值、坐标等数据。显然,在这些工作中,只是中断、读键值/坐标值是与设备相关的,而输入事件的缓冲区管理以及字符设备驱动的 file operations 接口则对输入设备是通用的原创 2022-05-22 19:19:25 · 233 阅读 · 0 评论 -
Linux 驱动的软件架构
Linux 驱动的软件架构Linux 设备驱动非常重视软件的可用性和跨平台能力。1. Linux 设备和驱动的分离把设备端的信息从驱动里剥离出来,让驱动以某种标准化的方法拿到这些信息。即Linux的总线、设备和驱动模型,总线负责匹配设备和驱动,驱动以标准的途径拿到板级信息。2. Linux 驱动的分层如输入子系统,提炼一个Input的核心层,把Linux 接口和整个input事件的汇报机制都实现在这里。3. Linux 设备驱动的主机、外设驱动分离主机控制器驱动不关心外设,外设驱动也不关心原创 2022-05-21 18:16:55 · 909 阅读 · 0 评论 -
在ubuntu系统运行linux内核相关函数demo
文章目录0. 概述1. 代码目录结构1.1 hello.c1.2 Makefile2. 操作过程2.1 make 编译模块2.2 生成文件2.3 安装模块2.4 卸载模块2.5 清除生成文件0. 概述我们编译linux驱动程序的函数代码都是Linux内核的函数,我们测试内核函数不能直接在用户层运行,需要借助ubuntu系统把内核函数放在模块,以模块形式插入ubuntu系统运行测试。1. 代码...原创 2019-02-25 17:00:22 · 875 阅读 · 0 评论 -
从基本理解到深入探究 Linux kernel container_of 宏
基本理解container_of 宏container_of,顾名思义就是某某某的容器,也就是说某某某成员变量所在的结构体是谁。在这里插入代码片一般人会使用这个宏接口就行了,若不想放弃请看下面深入探究container_of 宏。深入探究container_of 宏container_of 宏 版本一在这里插入代码片container_of 宏 版本二在这里插入代码片con...原创 2019-01-20 16:19:55 · 1226 阅读 · 1 评论 -
从基本理解到深入探究 Linux kernel 通知链(notifier chain)
文章目录基本理解Linux kernel 事件通知链深入探究Linux kernel 事件通知链基本理解Linux kernel 事件通知链linux/drivers/video/fb_notify.c一般人会使用这个几个接口就行了,若不想放弃请看下面深入探究Linux kernel 事件通知链。深入探究Linux kernel 事件通知链https://blog.csdn.ne...原创 2019-01-25 16:02:21 · 6184 阅读 · 2 评论 -
基于platform_driver 实现的misc 杂项设备
有些设备不像Input/rtc/framebuffer/tty等具体设备有归属类型可以套用框架,这些设备都叫杂项misc 设备。在misc_init()确定了miscdevice 的主设备号固定是10,次设备号在注册misc 可自定义,也可以随意分配。原创 2022-05-20 20:38:46 · 249 阅读 · 0 评论 -
Linux 设备驱动的并发控
并发和竞态编译乱序和执行乱序并发控制机制中断屏蔽原子操作整型原子操作位原子操作自旋锁自旋锁的使用读写自旋锁顺序锁读-复制-更新信号量互斥体原创 2022-05-19 13:25:40 · 382 阅读 · 0 评论 -
ARM Cortex-A73 Power management
The Cortex-A73 processor provides mechanisms and support to control both dynamic and static powerdissipation.文章目录Power domainsPower modesPower domainsThe Cortex-A73 processor can support multiple power domains. Each power domain has four possiblestate转载 2021-03-10 00:08:36 · 339 阅读 · 0 评论 -
Linux时间子系统专题汇总
关于Linux时间子系统有两个系列文章讲的非常好,分别是WowoTech和DroidPhone.还有两本书分别是介绍:Linux用户空间时间子系统《Linux/UNIX系统编程手册》的第10章 时间和第23章 定时器与休眠Linux内核时间子系统《深入Linux内核架构》的第15章 时间管理。《Linux/Unix系统编程手册》 时间子系统 《深入Linux内核架构》时间子系统Wowo...转载 2021-01-23 15:16:51 · 586 阅读 · 0 评论 -
healthd log 解读
文章目录healthd loglog打印来源log数据来源power_supply实现参考healthd logandroid kernel log中会打印出如下healthd log,这些log是什么意思?来自哪里?这篇文章为你解读。<12>[ 191.726280] .(4)[418:health@2.0-serv]healthd: battery l=4 v=3575 t=30.0 h=2 st=3 c=-248 fc=2946000 cc=1 chg=<12>[原创 2020-05-28 21:15:48 · 7216 阅读 · 1 评论 -
Linux电源管理(6)_Generic PM之Suspend功能【重磅文章】-- wowo
文章目录1. 前言2. Suspend功能有关的代码分布1)PM Core2)Device PM3)Platform dependent PM3. suspend&resume过程概述4. 代码分析4.1 suspend入口4.2 pm_suspend & enter_state4.3 suspend_prepare4.4 suspend_devices_and_enter4.5 ...转载 2019-10-28 22:49:02 · 942 阅读 · 0 评论 -
Linux电源管理(1)_整体架构 -- wowo
1. 前言在这个世界中,任何系统的运转都需要能量。如树木依靠光能生长,如马儿依靠食物奔跑,如计算机系统依靠电能运行。而能量的获取是有成本的,因此如果能在保证系统运转的基础上,尽量节省对能量的消耗,就会大大提升该系统的生存竞争力。这方面,大自然已经做的很好了,如植物的落叶,如动物的冬眠Hibernate,等等。而在计算机的世界里(这里以运行Linux OS的嵌入式系统为例),称作电源管理(Powe...转载 2019-10-28 19:36:22 · 1512 阅读 · 0 评论 -
Linux cpuidle framework(1)_概述和软件架构 -- wowo
文章目录1. 前言2. 功能概述3. 软件架构1)kernel schedule模块2)cpuidle core3)cpuidle drivers4)cpuidle governors4. 软件流程1. 前言在计算机系统中,CPU的功能是执行程序,总结起来就是我们在教科书上学到的:取指、译码、执行。那么问题来了,如果没有程序要执行,CPU要怎么办?也许您会说,停掉就是了啊。确实,是要停掉,但何...转载 2020-07-04 13:37:42 · 651 阅读 · 0 评论