]> git.hungrycats.org Git - linux/commitdiff
[PATCH] Move `ptrinfo' function from mm/slab.c to mm/memory.c
authorMiles Bader <miles@lsi.nec.co.jp>
Wed, 8 Oct 2003 01:28:30 +0000 (18:28 -0700)
committerLinus Torvalds <torvalds@home.osdl.org>
Wed, 8 Oct 2003 01:28:30 +0000 (18:28 -0700)
This function doesn't compile on non-MMU systems, so put it in a place
where it won't cause problems (mm/memory.c is only compiled if
CONFIG_MMU is defined).

mm/memory.c
mm/slab.c

index ab34c145d4c3b9ab4dfa7e95bd27e41bcd556d62..561c6fb9ea36fbcf2749522be2e74a5473cfd260 100644 (file)
@@ -1701,3 +1701,76 @@ struct page * vmalloc_to_page(void * vmalloc_addr)
 }
 
 EXPORT_SYMBOL(vmalloc_to_page);
+
+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;
+       }
+       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);
+
+       page = virt_to_page((void*)addr);
+       printk("struct page at %p, flags %lxh.\n", page, 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);
+
+                       if (c->flags & SLAB_RED_ZONE)
+                               printk("redzone: 0x%lx/0x%lx.\n",
+                                       *dbg_redzone1(c, objp),
+                                       *dbg_redzone2(c, objp));
+
+                       if (c->flags & SLAB_STORE_USER)
+                               printk("Last user: %p.\n",
+                                       *dbg_userword(c, objp));
+               }
+               spin_unlock_irqrestore(&c->spinlock, flags);
+
+       }
+}
index f9a4359316808fc578009ab5fe66cdf537fcc7a7..5c8f98e5a93aa3c5071032eaee1d08623d8d8098 100644 (file)
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -2763,76 +2763,3 @@ unsigned int ksize(const void *objp)
 
        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;
-       }
-       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);
-
-       page = virt_to_page((void*)addr);
-       printk("struct page at %p, flags %lxh.\n", page, 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);
-
-                       if (c->flags & SLAB_RED_ZONE)
-                               printk("redzone: 0x%lx/0x%lx.\n",
-                                       *dbg_redzone1(c, objp),
-                                       *dbg_redzone2(c, objp));
-
-                       if (c->flags & SLAB_STORE_USER)
-                               printk("Last user: %p.\n",
-                                       *dbg_userword(c, objp));
-               }
-               spin_unlock_irqrestore(&c->spinlock, flags);
-
-       }
-}