* Re: 2.5.70-bk4+: oops by mc -v /proc/bus/pci/00/00.0 [not found] ` <20030531195414.10c957b7.akpm@digeo.com> @ 2003-06-01 12:34 ` Ingo Oeser 2003-06-01 19:58 ` Andrew Morton 0 siblings, 1 reply; 3+ messages in thread From: Ingo Oeser @ 2003-06-01 12:34 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-mm Hi Andrew, On Sat, May 31, 2003 at 07:54:14PM -0700, Andrew Morton wrote: > It's pretty lame. Really we need a proper vma constructor > somewhere. you mean sth. like this? (Just initialized the members, that I had useful defaults for.) --- linux-2.5.70/kernel/fork.c Sun Jun 1 13:08:54 2003 +++ linux-2.5.70/kernel/fork.c Sun Jun 1 14:26:19 2003 @@ -1147,6 +1147,35 @@ /* SLAB cache for mm_struct structures (tsk->mm) */ kmem_cache_t *mm_cachep; +/* SLAB constructor for vm_area_struct objects */ +static void init_vm_area_struct(void *at, kmem_cache_t * dummy, + unsigned long flags) +{ + struct vm_area_struct *t = at; + + if (SLAB_CTOR_CONSTRUCTOR != + (flags & (SLAB_CTOR_CONSTRUCTOR | SLAB_CTOR_VERIFY) )) + return; + + /* these are NOT initialized, because they must be intialized + * by the caller of kmem_cache_alloc(): + + t->vm_mm + t->vm_start + t->vm_end + t->vm_page_prot + t->vm_flags + t->vm_rb + + */ + t->vm_next = NULL; + INIT_LIST_HEAD(&t->shared); + t->vm_ops = NULL; + t->vm_pgoff = 0; /* FIXME: maybe ~0UL is better here? */ + t->vm_file = NULL; + t->private_data = NULL; +} + void __init proc_caches_init(void) { sighand_cachep = kmem_cache_create("sighand_cache", @@ -1175,7 +1204,7 @@ vm_area_cachep = kmem_cache_create("vm_area_struct", sizeof(struct vm_area_struct), 0, - 0, NULL, NULL); + 0, init_vm_area_struct, NULL); if(!vm_area_cachep) panic("vma_init: Cannot alloc vm_area_struct SLAB cache"); Regards Ingo Oeser -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: 2.5.70-bk4+: oops by mc -v /proc/bus/pci/00/00.0 2003-06-01 12:34 ` 2.5.70-bk4+: oops by mc -v /proc/bus/pci/00/00.0 Ingo Oeser @ 2003-06-01 19:58 ` Andrew Morton 2003-06-01 21:53 ` William Lee Irwin III 0 siblings, 1 reply; 3+ messages in thread From: Andrew Morton @ 2003-06-01 19:58 UTC (permalink / raw) To: Ingo Oeser; +Cc: linux-mm Ingo Oeser <ingo.oeser@informatik.tu-chemnitz.de> wrote: > > Hi Andrew, > > On Sat, May 31, 2003 at 07:54:14PM -0700, Andrew Morton wrote: > > It's pretty lame. Really we need a proper vma constructor > > somewhere. > > you mean sth. like this? (Just initialized the members, that I had useful > defaults for.) > > ... > vm_area_cachep = kmem_cache_create("vm_area_struct", > sizeof(struct vm_area_struct), 0, > - 0, NULL, NULL); > + 0, init_vm_area_struct, NULL); > if(!vm_area_cachep) > panic("vma_init: Cannot alloc vm_area_struct SLAB cache"); > Well not really. Yes, a slab-based ctor would be nice, but it requires that all objects be kfreed in a "constructed" state. So a full audit/fixup of all users is needed. For now I was thinking more along the lines of struct vma_struct alloc_vma(gfp_flags) { vma = kmem_cache_alloc(); memset(vma); return vma; } And then deleting tons of open-coded init stuff elsewhere... -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: 2.5.70-bk4+: oops by mc -v /proc/bus/pci/00/00.0 2003-06-01 19:58 ` Andrew Morton @ 2003-06-01 21:53 ` William Lee Irwin III 0 siblings, 0 replies; 3+ messages in thread From: William Lee Irwin III @ 2003-06-01 21:53 UTC (permalink / raw) To: Andrew Morton; +Cc: Ingo Oeser, linux-mm On Sun, Jun 01, 2003 at 12:58:09PM -0700, Andrew Morton wrote: > Well not really. Yes, a slab-based ctor would be nice, but it requires that > all objects be kfreed in a "constructed" state. So a full audit/fixup of > all users is needed. > For now I was thinking more along the lines of > struct vma_struct alloc_vma(gfp_flags) > { > vma = kmem_cache_alloc(); > memset(vma); > return vma; > } > And then deleting tons of open-coded init stuff elsewhere... I'll add vma ctor bits to my TODO list, behind numerous other things.. -- wli -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2003-06-01 21:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20030531165523.GA18067@steel.home>
[not found] ` <20030531195414.10c957b7.akpm@digeo.com>
2003-06-01 12:34 ` 2.5.70-bk4+: oops by mc -v /proc/bus/pci/00/00.0 Ingo Oeser
2003-06-01 19:58 ` Andrew Morton
2003-06-01 21:53 ` William Lee Irwin III
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox