在驱动开发中,有时候配合app测试之后,使用ts等命令发现只能打印出头部信息,主体信息无法打印,如下: 原因:驱动中锁使用不规范导致系统死锁。 驱动测试代码: #define __SYLIXOS_KE...
SylixOS之Linux红黑树
1.设计数据结构 SylixOS内核中提供了简单的红黑树的操作,是裁剪自Linux的红黑树的代码。 1.1 定义红黑树root结点 通过LW_TREE_RB_ROOT定义一个root结点: struc...
Xv6内核分析(十五)
block 分配器 文件和目录的内容存在磁盘块中,磁盘块都从一个空闲块池中分配出来。xv6 的块分配器包含一个磁盘上的空闲块位图,每个块占一个位。引导区,超级块,i 节点块和位图块的位永远都被置为有效...
SimpleOS开发(8)改进进程调度
1. 系统接口名称修改 为了方便使用系统接口以及辨识系统接口,需要将系统接口的命名进行规范。这里的系统接口是指通用功能接口,比如开关中断、申请释放内存等等,simpleos采用简单的"os_"前缀来命...
SimpleOS开发(3)添加Cache操作接口
1. 实现Cache操作接口 在系统启动过程中需要使能icache和dcache来提高系统整体性能,并且后续别的系统模块也需要操作cache比如回写cache、失效cache等等,所以需要封装出cac...
VxWorks内核分析六(转)
原文:http://www.prtos.org/vxworks-initialization/。 本篇文章分析VxWorks的初始化,VxWorks的初始化可以分成两个部分: 1.具体处理器平台相关的...
Xv6内核分析(十八)
目录实现分析 1. Xv6目录简介 在xv6中目录的也是用inode来表示的,只是inode中的type字段为T_DIR。普通文件的数据块中保存的是文件的内容,但是目录inode的数据块中保存的是一系...
Xv6内核分析(八)
新进程运行分析 进程刚创建时的内核栈分布如下: 当从swtch中的ret返回后,新进程回到forkret中执行。 forkret首先会释放ptable.lock这个锁,这个锁是在scheduler线程...
Xv6内核分析(九)
ide硬盘驱动分析 1. 磁盘驱动程序 磁盘驱动程序用结构体 buf(称为缓冲区)来表示一个磁盘扇区。每一个缓冲区表示磁盘设备上的一个扇区。域 dev 和 sector 给出了设备号和扇区号,域 da...
浅谈编译(二)
OpenGL 1. OpenGL渲染管线 管线的英文名叫pipeline,其实翻译成流水线更贴切形象一点,渲染管线就是图形图像从数据一步一步形成最终输出的画面所要经历的各种操作过程。数据经过一个操作后...
浅谈编译(一)
LLVM 参考这篇博客: https://www.kanxue.com/book-37-410.htm#%E8%B5%B7%E6%BA%90%E4%B8%8E%E5%8F%91%E5%B1%95。 1...
SimpleOS开发(7)添加进程支持
1. 进程相关数据结构定义 首先定义进程的状态,这里参考xv6将进程定义为6个状态: PROC_UNUSED:进程控制块未使用处于空闲状态。 PROC_USED:进程控制块已经被使用状态。 PROC_...