源代码分析.pdfVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
源代码分析

FreeBSD-7 内核malloc 源代码分析 华为数通硬件四部 李昂 li_ang82@ 看FreeBSD-7 的内核代码有一段时间了,但是一直没有能够总结一下。由于没有写文档, 很多地方都是一带而过,并没有深入分析。为了逼自己能够分析完整个malloc 过程的代码,我 决定一边分析一边记录自己的分析笔记。 一提到内存分配,自然会想到malloc 和free 这对双胞胎。在FreeBSD 内核里,也有 malloc和free这两个函数。它们的参数与C语言标准库里面的略有不同,但是作用基本相同。 下面就从malloc 入手分析内存分配的过程。malloc 的源代码并不是很复杂,但为了分析方便, 我删除了一些调试、统计及诊断用的代码,只列出具体的实现代码。不过需要注意到是,单独看 malloc 的代码,有些数据结构的用途是无法分析清楚的,所以有些分析结果是我分析了free 的 代码得出的。如果你遇到对数据结构的功能不清楚的情况可以去看看free 的代码。在此我就不再 单独分析free 的代码了。 00297 void * 00298 malloc(unsigned long size, struct malloc_type *mtp, int flags) 00299 { 00300 int indx; 00301 caddr_t va; 00302 uma_zone_t zone; 00303 uma_keg_t keg; if 00334 iiff (flags M_WAITOK) 00335 KASSERT(curthread-td_intr_nesting_level == 0, 00336 (malloc(M_WAITOK) in interrupt context)); 00337 00346 if 00347 iiff (size = KMEM_ZMAX) { if 00348 iiff (size KMEM_ZMASK) 00349 size = (size ~KMEM_ZMASK) + KMEM_ZBASE; 00350 indx = kmemsize[size KMEM_ZSHIFT]; 00351 zone = kmemzones[indx].kz_zone; 00352 keg = zone-uz_keg; 00356 va = uma_zalloc(zone, flags); if 00357 iiff (va != NULL) 00358 size = keg-uk_size; 00359 malloc_type_zone_allocated(mtp, va == NULL ? 0 : size, indx); else 00360 } eellssee { 00361 size = roundup(size, PAGE_SIZE); 00362 zone = NULL; 00363 keg = NULL; 00364 va = uma_large_malloc(size, flags); 00365 malloc_type_allocated(mtp, va == NULL ? 0 : size); 00366 } if 00367 iiff (flags

您可能关注的文档

文档评论(0)

rovend + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档