1/* Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file. */
4
5#ifndef LIBRARIES_NACL_IO_LOG_H_
6#define LIBRARIES_NACL_IO_LOG_H_
7
8#include "sdk_util/macros.h"
9
10#define LOG_PREFIX "nacl_io: "
11
12#if defined(NDEBUG)
13
14#define LOG_TRACE(format, ...)
15#define LOG_ERROR(format, ...)
16#define LOG_WARN(format, ...)
17
18#else
19
20#if NACL_IO_LOGGING
21
22#define LOG_TRACE(format, ...) \
23  nacl_io_log(LOG_PREFIX format "\n", ##__VA_ARGS__)
24
25#else
26
27#define LOG_TRACE(format, ...)
28
29#endif
30
31#define LOG_ERROR(format, ...)                         \
32  nacl_io_log(LOG_PREFIX "%s:%d: error: " format "\n", \
33              __FILE__,                                \
34              __LINE__,                                \
35              ##__VA_ARGS__)
36
37#define LOG_WARN(format, ...)                            \
38  nacl_io_log(LOG_PREFIX "%s:%d: warning: " format "\n", \
39              __FILE__,                                  \
40              __LINE__,                                  \
41              ##__VA_ARGS__)
42
43#endif
44
45EXTERN_C_BEGIN
46
47/*
48 * Low level logging function for nacl_io log messages.
49 *
50 * This function sends its output directly to the IRT standard out
51 * file descriptor, which by default will apear on the standard out
52 * or chrome or sel_ldr.
53 */
54void nacl_io_log(const char* format, ...) PRINTF_LIKE(1, 2);
55
56EXTERN_C_END
57
58#endif  /* LIBRARIES_NACL_IO_LOG_H_ */
59