mm, printk: introduce new format string for flags
[linux-2.6-block.git] / mm / debug.c
index 410af904a7d513a5fae5424458dcd70e39ce9e05..0328fd3775451670d5e454ed69b2548b184794d2 100644 (file)
 #include <linux/memcontrol.h>
 #include <trace/events/mmflags.h>
 
-static const struct trace_print_flags pageflag_names[] = {
-       __def_pageflag_names
+#include "internal.h"
+
+const struct trace_print_flags pageflag_names[] = {
+       __def_pageflag_names,
+       {0, NULL}
+};
+
+const struct trace_print_flags gfpflag_names[] = {
+       __def_gfpflag_names,
+       {0, NULL}
 };
 
-static const struct trace_print_flags gfpflag_names[] = {
-       __def_gfpflag_names
+const struct trace_print_flags vmaflag_names[] = {
+       __def_vmaflag_names,
+       {0, NULL}
 };
 
 static void dump_flags(unsigned long flags,
@@ -58,14 +67,15 @@ void dump_page_badflags(struct page *page, const char *reason,
        if (PageCompound(page))
                pr_cont(" compound_mapcount: %d", compound_mapcount(page));
        pr_cont("\n");
-       BUILD_BUG_ON(ARRAY_SIZE(pageflag_names) != __NR_PAGEFLAGS);
-       dump_flags(page->flags, pageflag_names, ARRAY_SIZE(pageflag_names));
+       BUILD_BUG_ON(ARRAY_SIZE(pageflag_names) != __NR_PAGEFLAGS + 1);
+       dump_flags(page->flags, pageflag_names,
+                                       ARRAY_SIZE(pageflag_names) - 1);
        if (reason)
                pr_alert("page dumped because: %s\n", reason);
        if (page->flags & badflags) {
                pr_alert("bad because of flags:\n");
-               dump_flags(page->flags & badflags,
-                               pageflag_names, ARRAY_SIZE(pageflag_names));
+               dump_flags(page->flags & badflags, pageflag_names,
+                                       ARRAY_SIZE(pageflag_names) - 1);
        }
 #ifdef CONFIG_MEMCG
        if (page->mem_cgroup)
@@ -81,10 +91,6 @@ EXPORT_SYMBOL(dump_page);
 
 #ifdef CONFIG_DEBUG_VM
 
-static const struct trace_print_flags vmaflag_names[] = {
-       __def_vmaflag_names
-};
-
 void dump_vma(const struct vm_area_struct *vma)
 {
        pr_emerg("vma %p start %p end %p\n"
@@ -96,7 +102,7 @@ void dump_vma(const struct vm_area_struct *vma)
                (unsigned long)pgprot_val(vma->vm_page_prot),
                vma->anon_vma, vma->vm_ops, vma->vm_pgoff,
                vma->vm_file, vma->vm_private_data);
-       dump_flags(vma->vm_flags, vmaflag_names, ARRAY_SIZE(vmaflag_names));
+       dump_flags(vma->vm_flags, vmaflag_names, ARRAY_SIZE(vmaflag_names) - 1);
 }
 EXPORT_SYMBOL(dump_vma);
 
@@ -168,7 +174,7 @@ void dump_mm(const struct mm_struct *mm)
                );
 
                dump_flags(mm->def_flags, vmaflag_names,
-                               ARRAY_SIZE(vmaflag_names));
+                               ARRAY_SIZE(vmaflag_names) - 1);
 }
 
 #endif         /* CONFIG_DEBUG_VM */