- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 linux stat, lstat, fstat, fstatat函数详解(1)
stat, lstat, fstat, fstatat函数是UNIX提供给我们的访问文件信息的接口. 以下是函数原型: #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> int stat(const char *pathname, struct stat *statbuf);...
2018-09-17 21:51:01
4322
原创 u-boot 1.1.6 分析(1)
分析一个软件先从根目录Makefile分析. VERSION = 1 PATCHLEVEL = 1 SUBLEVEL = 6 EXTRAVERSION= U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL).$(EXTRAVERSION) VERSION_FILE = $(obj)include/version_auto...
2018-08-09 18:46:02
245
原创 linux等待队列
等待队列(wait_queue)表示一组睡眠的进程, 当某种条件为真的时候, 由内核来唤醒它们. 等待队列由双向链表来实现, 每一个等待队列都有一个等待队列头(wait_queue_head). struct __wait_queue_head { spinlock_t lock; struct list_head task_list; }; typedef struct __wait_...
2018-07-18 22:24:55
280
原创 linux task_struct结构总结
task_struct描述符描述了进程的所有信息,所以task_struct非常复杂, 该数据结构定义在linux/sched.h头文件. task_struct数据结构中第一个字段是state, 它描述了当前进程的状态. TASK_RUNNING(准备执行或者正在cpu执行) TASK_INTERRUPTIBLE(可中断的睡眠(即可以通过中断来唤醒进程, 包括软中断)) TASK_UNI...
2018-07-17 13:55:10
624
原创 x86中的分页机制
分页单元(page unit): 把线性地址转化成物理地址. 为了效率, 线性地址分成固定长度的组, 该单元成为页, 页内部连续的线性地址被映射到连续的物理地址.页框: 分页单元把RAM分成固定长度的页框, 页框是一个存储区域, 与页长度相同页是数据块, 页框是存储区域, 所以页可以放到页框和磁盘中.线性地址到物理地址的映射功能成为页表, 页表放在驻村, 并且在启用分页单元之前必须对页表初始化.分...
2018-05-19 23:08:09
818
原创 x86_32内存管理: 分段
段描述符:段描述符放在ldtr或者gdtr寄存器中, 有4种不同的段描述符:代码段描述符: 代表一个代码段, 它可以放在GDT或者LDT中数据段描述符:代表数据段任务状态段描述符(TSSD):代表一个任务状态段, 该段用于保存处理器寄存器的内容, 只能出现在GDT中局部描述符表描述符(LDTD)代表一个包含LDT段, 只出现在GDT逻辑地址到线性地址的转换:...
2018-05-19 15:45:44
236
原创 使用字符设备
分配设备编号后要创建该字符设备使用以下命令mknod /dev/test c major minormajor和minor的值可以用从/proc/devices文件获取, 可以写脚本来获取我们要使用该设备驱动就要通过系统调用, 实现系统调用接口就要用到一个数据结构file_operationsstruct file_operations fops = { .owner = THIS_MOD...
2018-05-18 07:57:21
451
原创 linux分配设备编号
在linux内核中用dev_t来保存设备的编号, dev_t 是个32位数值12位为主设备号, 20位次设备号, 想要获得dev_t的设备号最好使用给定的宏MAJOR(dev_t dev), MINOR(dev_t dev).相反用MKDEV(int major, int minor)来获取dev_t类型的值.如果我们在明确知道设备编号的时候可以使用register_chrdev_region函数...
2018-05-17 23:13:30
1484
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人