首先是定位查询可用空间的起点 free_vmap_cache 的作用是顺序分配的时候快速的定位 first 否则需要从 vmap_area_root 开始, 找到第一个大于 vmalloc 区间的 vma, 然后开始向后查询, 如果没有找到 使用 vstart 作为起始地址[vmalloc区间的第一块空间] 从first 开始向后查询, 查询第一块空闲的可以容下 size 的空...
> + * Walk a vmap address to the struct page it maps. Huge vmap mappings will > + * return the tail page that corresponds to the base page address, which > + * matches small vmap mappings. > */ > struct page *vmalloc_to_page(const void *vmalloc_addr) > { > @@ -363,25 +36...