Commit | Line | Data |
---|---|---|
b7cdc182 | 1 | /* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) |
9f36eaed | 2 | * |
a071f25d | 3 | * lttng/bug.h |
58c78202 | 4 | * |
886d51a3 | 5 | * Copyright (C) 2010-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> |
58c78202 MD |
6 | */ |
7 | ||
9f36eaed MJ |
8 | #ifndef _LTTNG_BUG_H |
9 | #define _LTTNG_BUG_H | |
10 | ||
58c78202 MD |
11 | /** |
12 | * BUILD_RUNTIME_BUG_ON - check condition at build (if constant) or runtime | |
13 | * @condition: the condition which should be false. | |
14 | * | |
15 | * If the condition is a constant and true, the compiler will generate a build | |
16 | * error. If the condition is not constant, a BUG will be triggered at runtime | |
17 | * if the condition is ever true. If the condition is constant and false, no | |
18 | * code is emitted. | |
19 | */ | |
20 | #define BUILD_RUNTIME_BUG_ON(condition) \ | |
21 | do { \ | |
22 | if (__builtin_constant_p(condition)) \ | |
a0b158b1 | 23 | BUILD_BUG_ON(condition); \ |
58c78202 MD |
24 | else \ |
25 | BUG_ON(condition); \ | |
26 | } while (0) | |
27 | ||
28 | #endif |