-
2009-04-22
dlmalloc in u-boot (1) 简介 - [uboot]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://redboot.blogbus.com/logs/38339807.html
最近,又有关于uboot的项目,于是读了malloc部分的代码。uboot上的malloc是用的dl malloc,这是由Doug Lea写的一个malloc版本。据说,linux上用的就是它。看网上有人测试,效率蛮不错的。
u-boot用dlmalloc的版本是 2.6.6,应该算是比较老的吧,最新的是2.8.3。不过,对于u-boot来讲已经足够了。本身没有多少内存好分配的。也用不到mmap。
对于u-boot来说,就是先设定一块内存空间留给malloc分配。malloc分配时,先回寻找当前空闲的块。如果找不到就通过函数malloc_extend_top调用一个宏:MORECORE(直接调用sbrk函数,sbrk函数是unix的标准函数,在uboot里面自己写了一个非常简单的sbrk),从系统(就是uboot了)申请一块内存。这时,uboot就从前面预留的内存空间中分配一块给malloc。
free的部分比较简单,当一块内存free的时候,先看看能不能跟前后空闲的内存块一起合并,这样就能避免内存的碎片问题。然后,把释放的内存按照大小插入的相应的链表中,以供下次分配用。
代码虽然不算很多,但是却挺不容易读懂的。
努力读了读,大致明白了基本的流程。打算分几次记录一下。
随机文章:
dlmalloc in u-boot (3) 流程 2009-04-23dlmalloc in u-boot (2) 数据结构 2009-04-23u-boot移植 2009-02-12u-boot命令配置 2009-02-12u-boot编译过程二 2009-02-11
收藏到:Del.icio.us
dlmalloc in u-boot (2) 数据结构
Blog:Redboot专栏2009-04-23 10:07:58
引用
下面Blog引用了该文:







