1 #ifndef LINUX_MM_DEBUG_H 2 #define LINUX_MM_DEBUG_H 1 3 4 #include <linux/stringify.h> 5 6 struct page; 7 struct vm_area_struct; 8 9 extern void dump_page(struct page *page, const char *reason); 10 extern void dump_page_badflags(struct page *page, const char *reason, 11 unsigned long badflags); 12 void dump_vma(const struct vm_area_struct *vma); 13 14 #ifdef CONFIG_DEBUG_VM 15 #define VM_BUG_ON(cond) BUG_ON(cond) 16 #define VM_BUG_ON_PAGE(cond, page) \ 17 do { \ 18 if (unlikely(cond)) { \ 19 dump_page(page, "VM_BUG_ON_PAGE(" __stringify(cond)")");\ 20 BUG(); \ 21 } \ 22 } while (0) 23 #define VM_BUG_ON_VMA(cond, vma) \ 24 do { \ 25 if (unlikely(cond)) { \ 26 dump_vma(vma); \ 27 BUG(); \ 28 } \ 29 } while (0) 30 #define VM_WARN_ON(cond) WARN_ON(cond) 31 #define VM_WARN_ON_ONCE(cond) WARN_ON_ONCE(cond) 32 #define VM_WARN_ONCE(cond, format...) WARN_ONCE(cond, format) 33 #else 34 #define VM_BUG_ON(cond) BUILD_BUG_ON_INVALID(cond) 35 #define VM_BUG_ON_PAGE(cond, page) VM_BUG_ON(cond) 36 #define VM_BUG_ON_VMA(cond, vma) VM_BUG_ON(cond) 37 #define VM_WARN_ON(cond) BUILD_BUG_ON_INVALID(cond) 38 #define VM_WARN_ON_ONCE(cond) BUILD_BUG_ON_INVALID(cond) 39 #define VM_WARN_ONCE(cond, format...) BUILD_BUG_ON_INVALID(cond) 40 #endif 41 42 #ifdef CONFIG_DEBUG_VIRTUAL 43 #define VIRTUAL_BUG_ON(cond) BUG_ON(cond) 44 #else 45 #define VIRTUAL_BUG_ON(cond) do { } while (0) 46 #endif 47 48 #endif 49