159ea7463SJiri Slaby #ifndef LINUX_MM_DEBUG_H 259ea7463SJiri Slaby #define LINUX_MM_DEBUG_H 1 359ea7463SJiri Slaby 4e4f67422SDave Hansen #include <linux/stringify.h> 5e4f67422SDave Hansen 6309381feSSasha Levin struct page; 70bf55139SSasha Levin struct vm_area_struct; 8309381feSSasha Levin 9d230dec1SKirill A. Shutemov extern void dump_page(struct page *page, const char *reason); 10d230dec1SKirill A. Shutemov extern void dump_page_badflags(struct page *page, const char *reason, 11309381feSSasha Levin unsigned long badflags); 120bf55139SSasha Levin void dump_vma(const struct vm_area_struct *vma); 13309381feSSasha Levin 1459ea7463SJiri Slaby #ifdef CONFIG_DEBUG_VM 1559ea7463SJiri Slaby #define VM_BUG_ON(cond) BUG_ON(cond) 16309381feSSasha Levin #define VM_BUG_ON_PAGE(cond, page) \ 17e4f67422SDave Hansen do { \ 18e4f67422SDave Hansen if (unlikely(cond)) { \ 19e4f67422SDave Hansen dump_page(page, "VM_BUG_ON_PAGE(" __stringify(cond)")");\ 20e4f67422SDave Hansen BUG(); \ 21e4f67422SDave Hansen } \ 22e4f67422SDave Hansen } while (0) 23*fa3759ccSSasha Levin #define VM_BUG_ON_VMA(cond, vma) \ 24*fa3759ccSSasha Levin do { \ 25*fa3759ccSSasha Levin if (unlikely(cond)) { \ 26*fa3759ccSSasha Levin dump_vma(vma); \ 27*fa3759ccSSasha Levin BUG(); \ 28*fa3759ccSSasha Levin } \ 29*fa3759ccSSasha Levin } while (0) 3002a8efedSAndrew Morton #define VM_WARN_ON(cond) WARN_ON(cond) 3102a8efedSAndrew Morton #define VM_WARN_ON_ONCE(cond) WARN_ON_ONCE(cond) 32ef6b571fSAndrew Morton #define VM_WARN_ONCE(cond, format...) WARN_ONCE(cond, format) 3359ea7463SJiri Slaby #else 3402602a18SKonstantin Khlebnikov #define VM_BUG_ON(cond) BUILD_BUG_ON_INVALID(cond) 35309381feSSasha Levin #define VM_BUG_ON_PAGE(cond, page) VM_BUG_ON(cond) 36*fa3759ccSSasha Levin #define VM_BUG_ON_VMA(cond, vma) VM_BUG_ON(cond) 3702a8efedSAndrew Morton #define VM_WARN_ON(cond) BUILD_BUG_ON_INVALID(cond) 3802a8efedSAndrew Morton #define VM_WARN_ON_ONCE(cond) BUILD_BUG_ON_INVALID(cond) 39ef6b571fSAndrew Morton #define VM_WARN_ONCE(cond, format...) BUILD_BUG_ON_INVALID(cond) 4059ea7463SJiri Slaby #endif 4159ea7463SJiri Slaby 4259ea7463SJiri Slaby #ifdef CONFIG_DEBUG_VIRTUAL 4359ea7463SJiri Slaby #define VIRTUAL_BUG_ON(cond) BUG_ON(cond) 4459ea7463SJiri Slaby #else 4559ea7463SJiri Slaby #define VIRTUAL_BUG_ON(cond) do { } while (0) 4659ea7463SJiri Slaby #endif 4759ea7463SJiri Slaby 4859ea7463SJiri Slaby #endif 49