操作系统ucore实验_lab2_debug
来源:互联网 发布:什么是网络摄像头 编辑:程序博客网 时间:2024/04/29 20:32
一个小bug,半天了才找到啊,主要是qemu+gdb的调试没搞定,加上对实验的理解不深刻,连蒙带猜......总之是个值得警醒的bug了,bug是写lab2第一部分代码出现的,在default_pmm.c中
bug代码如下:
62 //按地址从低到高入链表 63 static void 64 list_seq_add(list_entry_t *pl) 65 { 66 list_entry_t *le = &free_list; 67 68 while((le = list_next(le)) < pl ) // bug: 链表头&free_list是不能参与比较的 69 { 70 if(le == &free_list) 71 { 72 le = list_next(le); 73 break; 74 } 75 } 76 77 list_add_before(le,pl); 78 }修改后如下
62 //按地址从低到高入链表 63 static void 64 list_seq_add(list_entry_t *pl) 65 { 66 list_entry_t *le = &free_list; 67 68 while((le = list_next(le)) != &free_list) 69 { 70 if(le > pl) 71 { 72 list_add_before(le,pl); 73 break; 74 } 75 } 76 if(le == &free_list) 77 list_add(le,pl); 78 }
其实一开始就想这么写的,后来想把代码写短一点.....结果就是个教训了......
顺便吐曹下清华的指导书............说的太含蓄了,对我这个小菜鸟来说,.
后记:明显逗比了.........唉
正确如下:
62 //按地址从低到高入链表 63 static void 64 list_seq_add(list_entry_t *pl) 65 { 66 list_entry_t *le = &free_list; 67 68 while((le = list_next(le)) != &free_list) 69 { 70 if(le > pl) 71 { 72 break; 73 } 74 } 75 list_add_before(le,pl); //无论是到链表头还是break出来的 都存在其前面 76 77 }当然,我最后写的是这样
62 //按地址从低到高入链表 63 static void 64 list_seq_add(list_entry_t *pl) 65 { 66 list_entry_t *le = &free_list; 67 68 while(le > pl 69 && (le = list_next(le)) != &free_list) 70 { 71 72 } 73 list_add_before(le,pl); 74 75 }
我开始觉得,这是病啊,得治!
0 0
- 操作系统ucore实验_lab2_debug
- 操作系统实验报告:ucore-lab1
- ucore操作系统lab2实验报告
- 操作系统ucore lab1实验报告
- 操作系统ucore lab2实验报告
- 操作系统ucore lab3实验报告
- 操作系统ucore lab4实验报告
- 操作系统ucore lab5实验报告
- 操作系统ucore lab6实验报告
- 操作系统ucore lab7实验报告
- 操作系统ucore lab8实验报告
- # 操作系统实验报告:ucore-lab1
- 操作系统ucore lab1实验报告
- 操作系统ucore lab2实验报告
- 操作系统ucore lab1实验报告
- 操作系统ucore lab2实验报告
- 操作系统ucore lab3实验报告
- 操作系统ucore lab5实验报告
- linux网络编程基础笔记
- iOS调用系统功能一览
- windows MFC时钟模拟
- 使用友盟SDK
- poj 2774 lcp
- 操作系统ucore实验_lab2_debug
- 缺训傥督凡窖植境盘釉酶赋黑诙谓
- U-BOOT环境变量实现
- C# 读取Excel的一些问题
- How Tomcat works之第十一章之Parent and Child
- 对ATDD的理解
- MFC制作简单的图片按钮
- 写一个自动备份的脚本
- 实例化Class类对象几种方式