Reorganize tree
[libside.git] / include / side / macros.h
1 // SPDX-License-Identifier: MIT
2 /*
3 * Copyright 2022 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
4 */
5
6 #ifndef _SIDE_MACROS_H
7 #define _SIDE_MACROS_H
8
9 /* Helper macros */
10
11 #define SIDE_ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
12
13 /*
14 * Compound literals with static storage are needed by SIDE
15 * instrumentation.
16 * Compound literals are part of the C99 and C11 standards, but not
17 * part of the C++ standards. They are supported by most C++ compilers
18 * though.
19 *
20 * Example use:
21 * static struct mystruct *var = LTTNG_UST_COMPOUND_LITERAL(struct mystruct, { 1, 2, 3 });
22 */
23 #define SIDE_COMPOUND_LITERAL(type, ...) (type[]) { __VA_ARGS__ }
24
25 #define side_likely(x) __builtin_expect(!!(x), 1)
26 #define side_unlikely(x) __builtin_expect(!!(x), 0)
27
28 #define SIDE_PARAM(...) __VA_ARGS__
29
30 #endif /* _SIDE_MACROS_H */
This page took 0.029685 seconds and 4 git commands to generate.