Module Name: src
Committed By: riastradh
Date: Sun Dec 19 12:12:07 UTC 2021
Modified Files:
src/sys/external/bsd/common/include/asm: bug.h
Log Message:
linux: Make WARN_ONCE actually happen only once.
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/common/include/asm/bug.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/common/include/asm/bug.h
diff -u src/sys/external/bsd/common/include/asm/bug.h:1.3 src/sys/external/bsd/common/include/asm/bug.h:1.4
--- src/sys/external/bsd/common/include/asm/bug.h:1.3 Sun Dec 19 11:10:41 2021
+++ src/sys/external/bsd/common/include/asm/bug.h Sun Dec 19 12:12:07 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: bug.h,v 1.3 2021/12/19 11:10:41 riastradh Exp $ */
+/* $NetBSD: bug.h,v 1.4 2021/12/19 12:12:07 riastradh Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -48,11 +48,19 @@
: 0)
#define WARN_ONCE(CONDITION, FMT, ...) \
- WARN(CONDITION, FMT, ##__VA_ARGS__) /* XXX */
+({ \
+ static volatile unsigned __warn_once_done = 0; \
+ linux_warning((CONDITION) \
+ ? (atomic_swap_uint(&__warn_once_done, 1) == 0 \
+ ? (printf("warning: %s:%d: " FMT, __FILE__, __LINE__, \
+ ##__VA_ARGS__), 1) \
+ : 1) \
+ : 0); \
+})
#define WARN_ON(CONDITION) WARN(CONDITION, "%s\n", #CONDITION)
#define WARN_ON_SMP(CONDITION) WARN_ON(CONDITION) /* XXX */
-#define WARN_ON_ONCE(CONDITION) WARN_ON(CONDITION) /* XXX */
+#define WARN_ON_ONCE(CONDITION) WARN_ONCE(CONDITION, "%s\n", #CONDITION)
/* XXX Kludge to avoid GCC warning about statements without effect. */
static inline int