- 博客(10)
- 资源 (7)
- 收藏
- 关注
原创 第10章 中断 时钟
中断是指CPU在执行程序的过程中,出现了某些突发事件急待处理,CPU必须暂停当前程序的执行,转去处理突发事件,处理完毕后又返回原程序被中断的位置继续执行。根据中断的来源,中断可分为内部中断和外部中断,内部中断的中断源来自CPU内部(软件中断指令、溢出、除法错误等,例如,操作系统从用户态切换到内核态需借助CPU内部的软件中断),外部中断的中断源来自CPU外部,由外设提出请求。根据中断是否可以屏蔽,中...
2018-05-31 15:46:42 308
原创 container_of() offsetof()函数个人理解
这是在linux-source-4.13.0/include/linux/kernel.h中container_of()函数的定义:#define container_of(ptr, type, member) ({ \ void *__mptr = (void *)(ptr); ...
2018-05-31 13:30:35 1341
原创 第9章 异步通知和异步I/O
1.概念与作用异步通知:一单设备就绪,则主动通知应用程序,此时应用程序不需要查询设备状态。类似于“中断”概念,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。阻塞、非阻塞、异步通知 这几种本身没有优劣 应根据不同的应用场景合理选择、2.Linux异步通知编程 2.1Linux信号 参考: https://www.linuxidc.com/Linux/2016-...
2018-05-30 15:27:46 252
原创 Linux驱动开发详解源代码中的疑问之处探究-(九)
1.signal_test.c#include <sys/types.h>#include <sys/stat.h>#include <stdio.h>#include <fcntl.h>#include <signal.h>#include <unistd.h>#define MAX_LEN 100void i...
2018-05-30 15:20:55 250
原创 第8章 阻塞与非阻塞I/O
阻塞操作:在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进入睡眠状态,被从调度器的运行队列移走,直到等待条件被满足。非阻塞操作:在不能进行设备操作时,并不挂起,要么放弃要么不停地查询,直至可以进行操作为止。唤醒进程的地方最大可能发生在中断里面,因为在硬件资源获得的同时往往伴随着一个中断。8.1等待队列 实现阻塞进程的唤醒1.定义“等待队列头...
2018-05-29 19:10:58 430
原创 Linux驱动开发详解源代码中的疑问之处探究-(八)
1.DECLARE_WAITQUEUE(wait, current);//通过DECLARE_WAITQUEUE宏将等待队列项初始化成对应的任务结构,并且用于连接的相关指针均设置为空。其函数宏定义在wait.h中#define __WAITQUEUE_INITIALIZER(name, tsk) { \ .private = tsk, \ .func = default_wa...
2018-05-29 16:17:48 359
转载 Linux内核空间申请内存函数
kmalloc()函数原型:void *kmalloc(size_t size, gfp_t flags); kmalloc() 申请的内存位于物理内存映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因为存在较简单的转换关系,所以对申请的内存大小有限制,不能超过128KB。 较常用的 flags(分配内存的方法):GFP_ATOMIC —— 分配内存的过程是一个原...
2018-05-29 14:30:59 3824
原创 Linux中的inode
最近在学习设备驱动,常常接触到inode这个结构体。故特意找了一些资料来进一步透彻地理解它。一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区...
2018-05-29 10:05:09 225
原创 第七章 Linux设备驱动开发中的并发控制
7.1并发和竞态并发 :多个执行单元同时、并行被执行,而并发的执行单元对共享组员的访问很容易导致竞态竞态发生情况:1.对称多处理器(SMP)的多个CPU2.单CPU内进程与抢占它的进程 一个进程在内核执行的时候可能耗完了自己的时间片,也可能被另一个高优先级进程打断,而进程与抢占它的进程访问共享资源的情况3.中断与进程之间 中断可以打断正在执行的进程,且此时中断服务程序访问进程正在访问的...
2018-05-28 17:12:30 172
原创 第六章 字符设备
记录一下 建立一个简单的字符设备的编码过程前提准备:已经编译好的Linux内核进入../drivers/char/目录这里存放着这字符设备驱动mkdir globalmem 创建一个我们新建驱动的目录并进入新建globalmem.c文件,清单如下#include <linux/module.h>#include <linux/fs.h>#include <linu...
2018-05-28 17:09:26 285
mybatis逆向工程
2019-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人