1 /* util.h
2 * Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
5 *
6 * Logging and other utility functions.
7 */
8
9 #ifndef _UTIL_H_
10 #define _UTIL_H_
11
12 #include <stdlib.h>
13 #include <syslog.h>
14
15 #define die(_msg, ...) do { \
16 syslog(LOG_ERR, "libminijail: " _msg, ## __VA_ARGS__); \
17 abort(); \
18 } while (0)
19
20 #define pdie(_msg, ...) \
21 die(_msg ": %m", ## __VA_ARGS__)
22
23 #define warn(_msg, ...) \
24 syslog(LOG_WARNING, "libminijail: " _msg, ## __VA_ARGS__)
25
26 #define info(_msg, ...) \
27 syslog(LOG_INFO, "libminijail: " _msg, ## __VA_ARGS__)
28
29 extern const char *log_syscalls[];
30 extern const size_t log_syscalls_len;
31
is_android()32 static inline int is_android() {
33 #if defined(__ANDROID__)
34 return 1;
35 #else
36 return 0;
37 #endif
38 }
39
running_with_asan()40 static inline int running_with_asan() {
41 #ifndef __has_feature
42 #define __has_feature(x) 0
43 #endif
44
45 #if __has_feature(address_sanitizer)
46 return 1;
47 #else
48 return 0;
49 #endif
50 }
51
52 int lookup_syscall(const char *name);
53 const char *lookup_syscall_name(int nr);
54 long int parse_constant(char *constant_str, char **endptr);
55 char *strip(char *s);
56 char *tokenize(char **stringp, const char *delim);
57
58 #endif /* _UTIL_H_ */
59