]>
Commit | Line | Data |
---|---|---|
1f5596dd CB |
1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
2 | ||
17e0e368 CB |
3 | #ifndef __LXCFS_MACRO_H |
4 | #define __LXCFS_MACRO_H | |
5 | ||
1f5596dd CB |
6 | #ifndef _GNU_SOURCE |
7 | #define _GNU_SOURCE | |
8 | #endif | |
9 | ||
10 | #ifndef FUSE_USE_VERSION | |
11 | #define FUSE_USE_VERSION 26 | |
12 | #endif | |
13 | ||
14 | #define _FILE_OFFSET_BITS 64 | |
15 | ||
5fbea8a6 CB |
16 | #include <stdio.h> |
17 | ||
1f5596dd CB |
18 | #include "config.h" |
19 | ||
5fbea8a6 CB |
20 | #define BATCH_SIZE 50 |
21 | ||
22 | /* filesystem magic values */ | |
23 | #ifndef CGROUP_SUPER_MAGIC | |
24 | #define CGROUP_SUPER_MAGIC 0x27e0eb | |
25 | #endif | |
26 | ||
27 | #ifndef CGROUP2_SUPER_MAGIC | |
28 | #define CGROUP2_SUPER_MAGIC 0x63677270 | |
29 | #endif | |
30 | ||
17e0e368 CB |
31 | #define lxcfs_debug_stream(stream, format, ...) \ |
32 | do { \ | |
5fbea8a6 | 33 | fprintf(stream, "%s: %d: %s: " format "\n", __FILE__, __LINE__, \ |
5faa9af7 | 34 | __func__, ##__VA_ARGS__); \ |
17e0e368 CB |
35 | } while (false) |
36 | ||
5faa9af7 | 37 | #define lxcfs_error(format, ...) lxcfs_debug_stream(stderr, format, ##__VA_ARGS__) |
17e0e368 CB |
38 | |
39 | #ifdef DEBUG | |
5faa9af7 | 40 | #define lxcfs_debug(format, ...) lxcfs_error(format, ##__VA_ARGS__) |
17e0e368 CB |
41 | #else |
42 | #define lxcfs_debug(format, ...) | |
43 | #endif /* DEBUG */ | |
44 | ||
83dad6a5 | 45 | #ifdef VERBOSE |
5faa9af7 | 46 | #define lxcfs_v(format, ...) lxcfs_error(format, ##__VA_ARGS__); |
83dad6a5 SG |
47 | #else |
48 | #define lxcfs_v(format, ...) | |
49 | #endif /* VERBOSE */ | |
50 | ||
5fbea8a6 CB |
51 | #define log_error_errno(__ret__, __errno__, format, ...) \ |
52 | ({ \ | |
53 | errno = __errno__; \ | |
54 | lxcfs_error(format, ##__VA_ARGS__); \ | |
55 | __ret__; \ | |
56 | }) | |
57 | ||
971aa868 CB |
58 | #define log_error(__ret__, format, ...) \ |
59 | ({ \ | |
60 | lxcfs_error(format, ##__VA_ARGS__); \ | |
61 | __ret__; \ | |
62 | }) | |
63 | ||
5fbea8a6 CB |
64 | #define STRLITERALLEN(x) (sizeof(""x"") - 1) |
65 | ||
66 | /* Calculate the number of chars needed to represent a given integer as a C | |
67 | * string. Include room for '-' to indicate negative numbers and the \0 byte. | |
68 | * This is based on systemd. | |
69 | */ | |
70 | #define INTTYPE_TO_STRLEN(type) \ | |
71 | (2 + (sizeof(type) <= 1 \ | |
72 | ? 3 \ | |
73 | : sizeof(type) <= 2 \ | |
74 | ? 5 \ | |
75 | : sizeof(type) <= 4 \ | |
76 | ? 10 \ | |
77 | : sizeof(type) <= 8 \ | |
78 | ? 20 \ | |
79 | : sizeof(int[-2 * (sizeof(type) > 8)]))) | |
80 | ||
81 | #define ret_errno(__errno__) \ | |
82 | ({ \ | |
83 | errno = __errno__; \ | |
84 | -__errno__; \ | |
85 | }) | |
86 | ||
87 | #define ret_set_errno(__ret__, __errno__) \ | |
88 | ({ \ | |
89 | errno = __errno__; \ | |
90 | __ret__; \ | |
91 | }) | |
92 | ||
93 | #define lxc_iterate_parts(__iterator, __splitme, __separators) \ | |
94 | for (char *__p = NULL, *__it = strtok_r(__splitme, __separators, &__p); \ | |
95 | (__iterator = __it); \ | |
96 | __iterator = __it = strtok_r(NULL, __separators, &__p)) | |
97 | ||
2243c5a9 CB |
98 | #define log_exit(format, ...) \ |
99 | ({ \ | |
100 | fprintf(stderr, format, ##__VA_ARGS__); \ | |
4ec5c9da | 101 | _exit(EXIT_FAILURE); \ |
2243c5a9 CB |
102 | }) |
103 | ||
f1744de4 CB |
104 | #define PTR_TO_INT(p) ((int)((intptr_t)(p))) |
105 | #define INT_TO_PTR(u) ((void *)((intptr_t)(u))) | |
99b183fb CB |
106 | #define PTR_TO_UINT64(p) ((uint64_t)((intptr_t)(p))) |
107 | #define INTTYPE_TO_PTR(u) ((void *)((intptr_t)(u))) | |
108 | ||
b0a2dc08 CB |
109 | #define __visible __attribute__((visibility("default"))) |
110 | ||
17e0e368 | 111 | #endif /* __LXCFS_MACRO_H */ |