From b325f426b367d813b23799aeb058d7d3ac81f13d Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Mon, 22 Feb 2016 21:59:07 +0100 Subject: Optimize slab lookup on the free path Caches that use external slab data but allocate slabs from the direct physical mapping can look up slab data in constant time by associating the slab data directly with the underlying page. * kern/slab.c (kmem_slab_use_tree): Take KMEM_CF_DIRECTMAP into account. (kmem_slab_create): Set page private data if relevant. (kmem_slab_destroy): Clear page private data if relevant. (kmem_cache_free_to_slab): Use page private data if relevant. * vm/vm_page.c (vm_page_init_pa): Set `priv' member to NULL. * vm/vm_page.h (vm_page_set_priv, vm_page_get_priv): New functions. --- vm/vm_page.c | 1 + 1 file changed, 1 insertion(+) (limited to 'vm/vm_page.c') diff --git a/vm/vm_page.c b/vm/vm_page.c index 48d70964..a868fce8 100644 --- a/vm/vm_page.c +++ b/vm/vm_page.c @@ -165,6 +165,7 @@ vm_page_init_pa(struct vm_page *page, unsigned short seg_index, phys_addr_t pa) page->type = VM_PT_RESERVED; page->seg_index = seg_index; page->order = VM_PAGE_ORDER_UNLISTED; + page->priv = NULL; page->phys_addr = pa; } -- cgit v1.2.3