at v5.1 1.1 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _TOOLS_ASM_BUG_H 3#define _TOOLS_ASM_BUG_H 4 5#include <linux/compiler.h> 6 7#define __WARN_printf(arg...) do { fprintf(stderr, arg); } while (0) 8 9#define WARN(condition, format...) ({ \ 10 int __ret_warn_on = !!(condition); \ 11 if (unlikely(__ret_warn_on)) \ 12 __WARN_printf(format); \ 13 unlikely(__ret_warn_on); \ 14}) 15 16#define WARN_ON(condition) ({ \ 17 int __ret_warn_on = !!(condition); \ 18 if (unlikely(__ret_warn_on)) \ 19 __WARN_printf("assertion failed at %s:%d\n", \ 20 __FILE__, __LINE__); \ 21 unlikely(__ret_warn_on); \ 22}) 23 24#define WARN_ON_ONCE(condition) ({ \ 25 static int __warned; \ 26 int __ret_warn_once = !!(condition); \ 27 \ 28 if (unlikely(__ret_warn_once && !__warned)) { \ 29 __warned = true; \ 30 WARN_ON(1); \ 31 } \ 32 unlikely(__ret_warn_once); \ 33}) 34 35#define WARN_ONCE(condition, format...) ({ \ 36 static int __warned; \ 37 int __ret_warn_once = !!(condition); \ 38 \ 39 if (unlikely(__ret_warn_once)) \ 40 if (WARN(!__warned, format)) \ 41 __warned = 1; \ 42 unlikely(__ret_warn_once); \ 43}) 44 45#endif /* _TOOLS_ASM_BUG_H */