Re-organise public headers
[librseq.git] / include / rseq / utils.h
1 /* SPDX-License-Identifier: MIT */
2 /* SPDX-FileCopyrightText: 2016-2022 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> */
3
4 /*
5 * rseq/utils.h
6 */
7
8 #ifndef _RSEQ_UTILS_H
9 #define _RSEQ_UTILS_H
10
11 #include <stddef.h>
12 #include <stdio.h>
13
14 #ifndef rseq_sizeof_field
15 #define rseq_sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))
16 #endif
17
18 #ifndef rseq_offsetofend
19 #define rseq_offsetofend(TYPE, MEMBER) \
20 (offsetof(TYPE, MEMBER) + rseq_sizeof_field(TYPE, MEMBER))
21 #endif
22
23 #define __rseq_str_1(x) #x
24 #define __rseq_str(x) __rseq_str_1(x)
25
26 #define rseq_log(fmt, ...) \
27 fprintf(stderr, fmt "(in %s() at " __FILE__ ":" __rseq_str(__LINE__)"\n", \
28 ## __VA_ARGS__, __func__)
29
30 #define rseq_bug(fmt, ...) \
31 do { \
32 rseq_log(fmt, ## __VA_ARGS__); \
33 abort(); \
34 } while (0)
35
36 #endif /* _RSEQ_UTILS_H */
This page took 0.031117 seconds and 5 git commands to generate.