博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OK6410A 开发板 (八) 37 linux-5.11 OK6410A 内存管理第五阶段
阅读量:4285 次
发布时间:2019-05-27

本文共 979 字,大约阅读时间需要 3 分钟。

vmallocvmalloc_init	for_each_possible_cpu(i) {
// vfree_deferred 类型变量的 链表 和 工作任务 free_work // free_work用于vfree执行时延迟异步释放vmalloc内存 struct vfree_deferred *p; ... // vmap_block_queue 类型变量的链表和锁 // vmap_block_queue 是 非连续内存块队列管理结构 struct vmap_block_queue *vbq; ... } // 将vmalloc_init之前的过程中分配的vmalloc区域插入红黑树vmap_area_root中 // 将挂接在vmlist链表的各项__insert_vmap_area()输入到非连续内存块的管理中 // vmlist的初始化是通过iotable_init初始化(arm32) // 最终所有的vmalloc的eara都会挂到vmap_area_list链表中 for (tmp = vmlist; tmp; tmp = tmp->next) {
struct vmap_area *va = kmem_cache_zalloc(vmap_area_cachep, GFP_NOWAIT); va->vm = tmp; ... insert_vmap_area(va, &vmap_area_root, &vmap_area_list); } vmap_init_free_space(); vmap_initialized = true;
vmap_area  结构体 中 有两个成员	1. list , 用来挂 在 vmap_area_list	2. rb_node , 用来挂 在 vmap_area_root其他成员va_start	vmalloc区的虚拟区间起始地址va_end		vmalloc区的虚拟区间结束地址flags		类型标识rb_node		插入红黑树vmap_area_root的节点list		用于加入链表vmap_area_list的节点purge_list	用于加入到全局链表vmap_purge_list中vm			指向对应的vm_struct

转载地址:http://zjigi.baihongyu.com/

你可能感兴趣的文章
简易博客编辑器:玩转document.execCommand命令
查看>>
你知道C/S和B/S两种架构有什么区别吗?
查看>>
【学习干货】给coder的10个读书建议
查看>>
浏览器的CSS Hacks
查看>>
PHP基本语法的小结
查看>>
建站小记
查看>>
问题:贴友关于CSS效果的实现
查看>>
问题:关于坛友的一个js轮播效果的实现
查看>>
问题:关于贴友的一个书本页面简单布局(html+css)的实现
查看>>
问题:关于坛友一个获取text内容并改变样式的实现
查看>>
由一位坛友的布局想到的定位问题:absolute和relative
查看>>
php数组使用小结
查看>>
《互联网时代》告诉我的互联网简史(一)
查看>>
《互联网时代》告诉我的互联网简史(二)
查看>>
怎么限制Google自动调整字体大小
查看>>
JavaScript+IndexedDB实现留言板:客户端存储数据
查看>>
问题:如何在固定大小的DIV层插入N多个图片
查看>>
怎么解决div覆盖内容却没覆盖的问题?
查看>>
九个Console命令,让js调试更简单
查看>>
Linux与Windows的8个不同
查看>>