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