博文

目前显示的是 十二月, 2010的博文

回顾2010

这一年就要过完了,照例要总结一下,这一年都做了一些什么。明年的这个时候应该都拿到offer了。等待毕业和入职了。每想到此,既兴奋又紧张。明年的一年又是紧张的一年,不知道系统能否顺利做完。 这一年最大的收获,应该是入了Linux的门,并且看了不少关于编译链接,计算机系统结构和操作系统方面的书。感觉羽翼一点点丰满,不过,当然距离大牛还有很长的路要走。 上半年的时候,基本上把精力都放在了Linux驱动方面了。看过了宋宝华的Linux驱动开发的书和Linux Device Driver,除此之外,还看了unstanding linux kenrel.和Linux kernel development. 下半年把精力都放在了项目上,移植了yaffs到xenarm上,并且将原来支持的128MB支持到了768MB,当然最大能够达到950MB。将xenheap的大小扩大到了64MB。这一块,我感觉,还是蛮有成就感。内存太小,肯定干不成事情。跑一个android,最少需要70MB以上的,原来的128MB一定是不够用的。特别是,当yaffs在xenarm里面跑成功以后,那种感觉是难以形容的。每看到自己写的代码,就像看到自己的孩子似的。现在的xenarm已经能够跑起来两个android了。不过缺点是,相关的设备虚拟化程度仍然不够。调度算法仍然不完整,调度两个android,明显bug太多,另外,由于设备虚拟化的问题,现在只能跑两个一模一样的系统。因为要公用nand嘛,nand里放的是root fs.在下半年,也看了一些书,这些书,增加了我的一些自信。《自己动手写OS-第二版》《程序员自我修养--链接装载与库》《代码揭秘》《CODE》其中前两本,给我的感觉很棒。除此之外,还看了PHP和SHELL方面的两本书,同时还看了正则表达式方面的书。当然,看过之后,没有怎么用,都忘记了,不过重新拾起来应该比较快。 去年的这个时候,我按照月份,把每个月所做的事情都列了一下。今年,想到此,便想到了在实验室每个月7号写的QA,我想也许是因为,我对QA已经恐惧了,所以,不写的那么具体了。总结一下,以告慰自己,又过了一年,没有虚度年华。

xenarm代码片段注释

ENTRY(ret_to_user)       test_all_events :         disable_irq     r1                      @ ensure IRQs are disabled               bl      get_irq_stat                    @ get softirq pending status         ldr     r1, [r0, #OFFSET_SOFTIRQ_PENDING]@指针操作,返回值放到r0中         ldr     r0, = 0xffff           tst     r1, r0                          @ bit mask check is needed!!!         beq     test_guest_events         enable_irq      r1                      @ sti       @ r1.. ok??????         bl      do_softirq         b       test_all_events /*  disable_irq r1         .macro  disable_irq, temp         msr     cpsr_c, #PSR_STATUS_I | PSR_MODE_SVC //只更改控制位0~8,禁止中断标志位         .endm   */ ENTRY(test_guest_events)         vcpu    r10                           @从在xenheap中堆栈页的最下部分得到vcpu结构         ldr     r11, [r10, #OFFSET_VCPU_INFO] @获得vcpu_info         ldrb    r9, [r11, #OFFSET_EVTCHN_UPCALL_MASK]     @r9为evtchn_upcall_mask         tst     r9, # 0xFF                                  @如果r9为非零则,bne

like-linux系统链表原理简单分析

  1 /*   2  like-linux系统下链表结构分析   3  *在like-linux系统中,链表的可移植性比较好,并不像在大学学到的链表结构那样的死板。其原理在很多linux的讲解中都有描述。   4  *原理部分可以看一下李先静老师写的《系统程序员成长之路》一书。   5  *本文根据xenarm中的链表来具体得理一下在like-linux系统中的链表原理。   6     7  *因为时间有限,只是把相关宏定义简单扩展,并把代码做了注释和筛捡。没有成文,望各位看官见谅   8   */   9  10  11 /*  12  *定义了一个相关结构和spinlock  13   */  14 spinlock_t consistent_lock;  15 struct  arm_vm_region {  16          struct  list_head        vm_list;  17          unsigned   long            vm_start;  18          unsigned   long            vm_end;  19          struct  page             *vm_pages;  20          int                      vm_active;  21 };  22  23 /*  24  *初始化一个链表头  25  *链表头不同于链表节点,在实际分配中,链表头存放的是边界范围等一些概括信息  26  *  27   */  28 static   struct  arm_vm_region consistent_head = { //初始化一个链表头  29         .vm_list        = LIST_HEAD_INIT(consistent_head.vm_list),  30         .vm_start       = CONSISTENT_BASE,  31         .vm_end         = CONSISTENT_END,  32 };  33  34 static   struct  arm_vm_region * arm_vm_region_alloc( st