public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] remove ptrinfo
@ 2004-09-01 10:02 Christoph Hellwig
  0 siblings, 0 replies; 2+ messages in thread
From: Christoph Hellwig @ 2004-09-01 10:02 UTC (permalink / raw)
  To: akpm; +Cc: linux-kernel

it's defined in slab.c but not used anywhere


--- 1.34/include/linux/slab.h	2004-09-01 06:07:01 +02:00
+++ edited/include/linux/slab.h	2004-09-01 11:14:11 +02:00
@@ -117,8 +117,6 @@
 extern kmem_cache_t	*sighand_cachep;
 extern kmem_cache_t	*bio_cachep;
 
-void ptrinfo(unsigned long addr);
-
 extern atomic_t slab_reclaim_pages;
 
 #endif	/* __KERNEL__ */
--- 1.144/mm/slab.c	2004-08-27 22:24:14 +02:00
+++ edited/mm/slab.c	2004-09-01 11:14:11 +02:00
@@ -3023,73 +3024,4 @@
 	}
 
 	return size;
-}
-
-void ptrinfo(unsigned long addr)
-{
-	struct page *page;
-
-	printk("Dumping data about address %p.\n", (void*)addr);
-	if (!virt_addr_valid((void*)addr)) {
-		printk("virt addr invalid.\n");
-		return;
-	}
-#ifdef CONFIG_MMU
-	do {
-		pgd_t *pgd = pgd_offset_k(addr);
-		pmd_t *pmd;
-		if (pgd_none(*pgd)) {
-			printk("No pgd.\n");
-			break;
-		}
-		pmd = pmd_offset(pgd, addr);
-		if (pmd_none(*pmd)) {
-			printk("No pmd.\n");
-			break;
-		}
-#ifdef CONFIG_X86
-		if (pmd_large(*pmd)) {
-			printk("Large page.\n");
-			break;
-		}
-#endif
-		printk("normal page, pte_val 0x%llx\n",
-		  (unsigned long long)pte_val(*pte_offset_kernel(pmd, addr)));
-	} while(0);
-#endif
-
-	page = virt_to_page((void*)addr);
-	printk("struct page at %p, flags %08lx\n",
-			page, (unsigned long)page->flags);
-	if (PageSlab(page)) {
-		kmem_cache_t *c;
-		struct slab *s;
-		unsigned long flags;
-		int objnr;
-		void *objp;
-
-		c = GET_PAGE_CACHE(page);
-		printk("belongs to cache %s.\n",c->name);
-
-		spin_lock_irqsave(&c->spinlock, flags);
-		s = GET_PAGE_SLAB(page);
-		printk("slabp %p with %d inuse objects (from %d).\n",
-			s, s->inuse, c->num);
-		check_slabp(c,s);
-
-		objnr = (addr-(unsigned long)s->s_mem)/c->objsize;
-		objp = s->s_mem+c->objsize*objnr;
-		printk("points into object no %d, starting at %p, len %d.\n",
-			objnr, objp, c->objsize);
-		if (objnr >= c->num) {
-			printk("Bad obj number.\n");
-		} else {
-			kernel_map_pages(virt_to_page(objp),
-					c->objsize/PAGE_SIZE, 1);
-
-			print_objinfo(c, objp, 2);
-		}
-		spin_unlock_irqrestore(&c->spinlock, flags);
-
-	}
 }

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH] remove ptrinfo
@ 2004-09-01 17:53 Manfred Spraul
  0 siblings, 0 replies; 2+ messages in thread
From: Manfred Spraul @ 2004-09-01 17:53 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: linux-kernel

Christoph wrote:

>it's defined in slab.c but not used anywhere
>  
>
Correct: ptrinfo is a debug-only function. Intended to be called from 
kgdb stubs or for local printk debugging tests.
I think gdb even allows to call functions while it's stopped on a 
breakpoint.

I added it as an example what slab knows about it's objects - I have 
such test functions in my local files, but most developers don't know 
how slab tracks objects. It's reference code - I'm not sure if it 
belongs into the kernel or not.

--
    Manfred


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-09-01 17:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-01 17:53 [PATCH] remove ptrinfo Manfred Spraul
  -- strict thread matches above, loose matches on Subject: below --
2004-09-01 10:02 Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox