brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.1 KiB · 22ebc74 Raw
148 lines · c
1//===-- DNBLog.h ------------------------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9//  Created by Greg Clayton on 6/18/07.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLDB_TOOLS_DEBUGSERVER_SOURCE_DNBLOG_H14#define LLDB_TOOLS_DEBUGSERVER_SOURCE_DNBLOG_H15 16#include "DNBDefs.h"17#include <cstdint>18#include <cstdio>19 20extern "C" {21 22// Flags that get filled in automatically before calling the log callback23// function24#define DNBLOG_FLAG_FATAL (1u << 0)25#define DNBLOG_FLAG_ERROR (1u << 1)26#define DNBLOG_FLAG_WARNING (1u << 2)27#define DNBLOG_FLAG_DEBUG (1u << 3)28#define DNBLOG_FLAG_VERBOSE (1u << 4)29#define DNBLOG_FLAG_THREADED (1u << 5)30 31#define DNBLOG_ENABLED32 33#if defined(DNBLOG_ENABLED)34 35void _DNBLog(uint32_t flags, const char *format, ...)36    __attribute__((format(printf, 2, 3)));37void _DNBLogDebug(const char *fmt, ...) __attribute__((format(printf, 1, 2)));38void _DNBLogDebugVerbose(const char *fmt, ...)39    __attribute__((format(printf, 1, 2)));40void _DNBLogThreaded(const char *fmt, ...)41    __attribute__((format(printf, 1, 2)));42void _DNBLogThreadedIf(uint32_t mask, const char *fmt, ...)43    __attribute__((format(printf, 2, 3)));44void _DNBLogError(const char *fmt, ...) __attribute__((format(printf, 1, 2)));45void _DNBLogFatalError(int err, const char *fmt, ...)46    __attribute__((format(printf, 2, 3)));47void _DNBLogVerbose(const char *fmt, ...) __attribute__((format(printf, 1, 2)));48void _DNBLogWarning(const char *fmt, ...) __attribute__((format(printf, 1, 2)));49void _DNBLogWarningVerbose(const char *fmt, ...)50    __attribute__((format(printf, 1, 2)));51bool DNBLogCheckLogBit(uint32_t bit);52uint32_t DNBLogSetLogMask(uint32_t mask);53uint32_t DNBLogGetLogMask();54void DNBLogSetLogCallback(DNBCallbackLog callback, void *baton);55DNBCallbackLog DNBLogGetLogCallback();56bool DNBLogEnabled();57bool DNBLogEnabledForAny(uint32_t mask);58int DNBLogGetDebug();59void DNBLogSetDebug(int g);60int DNBLogGetVerbose();61void DNBLogSetVerbose(int g);62 63#define DNBLog(fmt, ...)                                                       \64  do {                                                                         \65    if (DNBLogEnabled()) {                                                     \66      _DNBLog(0, fmt, ##__VA_ARGS__);                                          \67    }                                                                          \68  } while (0)69#define DNBLogDebug(fmt, ...)                                                  \70  do {                                                                         \71    if (DNBLogEnabled()) {                                                     \72      _DNBLogDebug(fmt, ##__VA_ARGS__);                                        \73    }                                                                          \74  } while (0)75#define DNBLogDebugVerbose(fmt, ...)                                           \76  do {                                                                         \77    if (DNBLogEnabled()) {                                                     \78      _DNBLogDebugVerbose(fmt, ##__VA_ARGS__);                                 \79    }                                                                          \80  } while (0)81#define DNBLogThreaded(fmt, ...)                                               \82  do {                                                                         \83    if (DNBLogEnabled()) {                                                     \84      _DNBLogThreaded(fmt, ##__VA_ARGS__);                                     \85    }                                                                          \86  } while (0)87#define DNBLogThreadedIf(mask, fmt, ...)                                       \88  do {                                                                         \89    if (DNBLogEnabledForAny(mask)) {                                           \90      _DNBLogThreaded(fmt, ##__VA_ARGS__);                                     \91    }                                                                          \92  } while (0)93#define DNBLogError(fmt, ...)                                                  \94  do {                                                                         \95    if (DNBLogEnabled()) {                                                     \96      _DNBLogError(fmt, ##__VA_ARGS__);                                        \97    }                                                                          \98  } while (0)99#define DNBLogFatalError(err, fmt, ...)                                        \100  do {                                                                         \101    if (DNBLogEnabled()) {                                                     \102      _DNBLogFatalError(err, fmt, ##__VA_ARGS__);                              \103    }                                                                          \104  } while (0)105#define DNBLogVerbose(fmt, ...)                                                \106  do {                                                                         \107    if (DNBLogEnabled()) {                                                     \108      _DNBLogVerbose(fmt, ##__VA_ARGS__);                                      \109    }                                                                          \110  } while (0)111#define DNBLogWarning(fmt, ...)                                                \112  do {                                                                         \113    if (DNBLogEnabled()) {                                                     \114      _DNBLogWarning(fmt, ##__VA_ARGS__);                                      \115    }                                                                          \116  } while (0)117#define DNBLogWarningVerbose(fmt, ...)                                         \118  do {                                                                         \119    if (DNBLogEnabled()) {                                                     \120      _DNBLogWarningVerbose(fmt, ##__VA_ARGS__);                               \121    }                                                                          \122  } while (0)123 124#else // #if defined(DNBLOG_ENABLED)125 126#define DNBLogDebug(...) ((void)0)127#define DNBLogDebugVerbose(...) ((void)0)128#define DNBLogThreaded(...) ((void)0)129#define DNBLogThreadedIf(...) ((void)0)130#define DNBLogError(...) ((void)0)131#define DNBLogFatalError(...) ((void)0)132#define DNBLogVerbose(...) ((void)0)133#define DNBLogWarning(...) ((void)0)134#define DNBLogWarningVerbose(...) ((void)0)135#define DNBLogGetLogFile() ((FILE *)NULL)136#define DNBLogSetLogFile(f) ((void)0)137#define DNBLogCheckLogBit(bit) ((bool)false)138#define DNBLogSetLogMask(mask) ((uint32_t)0u)139#define DNBLogGetLogMask() ((uint32_t)0u)140#define DNBLogToASL() ((void)0)141#define DNBLogToFile() ((void)0)142#define DNBLogCloseLogFile() ((void)0)143 144#endif // #else defined(DNBLOG_ENABLED)145}146 147#endif // LLDB_TOOLS_DEBUGSERVER_SOURCE_DNBLOG_H148