blob: 78feb529baeb1f6e448acae20da56ec990980dcd [file] [log] [blame]
Jorge Lucangeli Obesa6b034d2012-08-07 15:29:20 -07001/* 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 { \
Jorge Lucangeli Obes2f61ee42014-06-16 11:08:18 -070016 syslog(LOG_ERR, "libminijail: " _msg, ## __VA_ARGS__); \
17 abort(); \
Jorge Lucangeli Obesa6b034d2012-08-07 15:29:20 -070018} while (0)
19
20#define pdie(_msg, ...) \
Mike Frysingerb5d7b9f2015-01-09 03:50:15 -050021 die(_msg ": %m", ## __VA_ARGS__)
Jorge Lucangeli Obesa6b034d2012-08-07 15:29:20 -070022
23#define warn(_msg, ...) \
Jorge Lucangeli Obes2f61ee42014-06-16 11:08:18 -070024 syslog(LOG_WARNING, "libminijail: " _msg, ## __VA_ARGS__)
Jorge Lucangeli Obesa6b034d2012-08-07 15:29:20 -070025
Jorge Lucangeli Obesa2053902016-08-02 12:08:15 -040026#define pwarn(_msg, ...) \
27 warn(_msg ": %m", ## __VA_ARGS__)
28
Jorge Lucangeli Obesa6b034d2012-08-07 15:29:20 -070029#define info(_msg, ...) \
Jorge Lucangeli Obes2f61ee42014-06-16 11:08:18 -070030 syslog(LOG_INFO, "libminijail: " _msg, ## __VA_ARGS__)
Jorge Lucangeli Obesa6b034d2012-08-07 15:29:20 -070031
Jorge Lucangeli Obesbda833c2012-07-31 16:25:56 -070032extern const char *log_syscalls[];
33extern const size_t log_syscalls_len;
34
Dylan Reidc4b0fdc2016-01-13 18:28:29 -080035static inline int is_android() {
Jorge Lucangeli Obes4b276a62016-01-07 14:31:33 -080036#if defined(__ANDROID__)
37 return 1;
38#else
39 return 0;
40#endif
41}
42
Jorge Lucangeli Obes2413f372016-04-06 18:43:10 -070043static inline int running_with_asan() {
Jorge Lucangeli Obes9e35c092016-04-11 13:30:08 -070044#ifndef __has_feature
45#define __has_feature(x) 0
46#endif
47
48#if __has_feature(address_sanitizer)
Jorge Lucangeli Obes2413f372016-04-06 18:43:10 -070049 return 1;
50#else
51 return 0;
52#endif
53}
54
Jorge Lucangeli Obesa6b034d2012-08-07 15:29:20 -070055int lookup_syscall(const char *name);
56const char *lookup_syscall_name(int nr);
Luis Hector Chavez40b25742013-09-22 19:44:06 -070057long int parse_constant(char *constant_str, char **endptr);
Jorge Lucangeli Obesa6b034d2012-08-07 15:29:20 -070058char *strip(char *s);
Jorge Lucangeli Obes66cfc142012-11-30 15:42:52 -080059char *tokenize(char **stringp, const char *delim);
Jorge Lucangeli Obesa6b034d2012-08-07 15:29:20 -070060
61#endif /* _UTIL_H_ */