124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- DNBLog.h ------------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Created by Greg Clayton on 6/18/07. 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef __DNBLog_h__ 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define __DNBLog_h__ 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <stdio.h> 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <stdint.h> 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "DNBDefs.h" 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifdef __cplusplus 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerextern "C" { 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Flags that get filled in automatically before calling the log callback function 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_FLAG_FATAL (1u << 0) 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_FLAG_ERROR (1u << 1) 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_FLAG_WARNING (1u << 2) 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_FLAG_DEBUG (1u << 3) 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_FLAG_VERBOSE (1u << 4) 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_FLAG_THREADED (1u << 5) 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_ENABLED 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#if defined (DNBLOG_ENABLED) 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNB_EXPORT __attribute__((visibility("default"))) 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 390e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid _DNBLog(uint32_t flags, const char *format, ...) __attribute__ ((format (printf, 2, 3))) DNB_EXPORT; 400e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid _DNBLogDebug (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 410e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid _DNBLogDebugVerbose (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 420e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid _DNBLogThreaded (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 430e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid _DNBLogThreadedIf (uint32_t mask, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))) DNB_EXPORT; 440e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid _DNBLogError (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 450e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid _DNBLogFatalError (int err, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))) DNB_EXPORT; 460e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid _DNBLogVerbose (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 470e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid _DNBLogWarning (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 480e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid _DNBLogWarningVerbose (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool DNBLogCheckLogBit (uint32_t bit) DNB_EXPORT; 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t DNBLogSetLogMask (uint32_t mask) DNB_EXPORT; 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t DNBLogGetLogMask () DNB_EXPORT; 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid DNBLogSetLogCallback (DNBCallbackLog callback, void *baton) DNB_EXPORT; 539c81c3322b68e49530b5c2180f8a0db8c6a494fbGreg ClaytonDNBCallbackLog DNBLogGetLogCallback () DNB_EXPORT; 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool DNBLogEnabled () DNB_EXPORT; 5524bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Claytonbool DNBLogEnabledForAny (uint32_t mask) DNB_EXPORT; 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerint DNBLogGetDebug () DNB_EXPORT; 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid DNBLogSetDebug (int g) DNB_EXPORT; 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerint DNBLogGetVerbose () DNB_EXPORT; 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid DNBLogSetVerbose (int g) DNB_EXPORT; 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLog(fmt, ...) do { if (DNBLogEnabled()) { _DNBLog(0, fmt, ## __VA_ARGS__); } } while (0) 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogDebug(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogDebug(fmt, ## __VA_ARGS__); } } while (0) 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogDebugVerbose(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogDebugVerbose(fmt, ## __VA_ARGS__); } } while (0) 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogThreaded(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogThreaded(fmt, ## __VA_ARGS__); } } while (0) 6524bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton#define DNBLogThreadedIf(mask, fmt, ...) do { if (DNBLogEnabledForAny(mask)) { _DNBLogThreaded(fmt, ## __VA_ARGS__); } } while (0) 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogError(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogError(fmt, ## __VA_ARGS__); } } while (0) 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogFatalError(err, fmt, ...) do { if (DNBLogEnabled()) { _DNBLogFatalError(err, fmt, ## __VA_ARGS__); } } while (0) 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogVerbose(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogVerbose(fmt, ## __VA_ARGS__); } } while (0) 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogWarning(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogWarning(fmt, ## __VA_ARGS__); } } while (0) 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogWarningVerbose(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogWarningVerbose(fmt, ## __VA_ARGS__); } } while (0) 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#else // #if defined(DNBLOG_ENABLED) 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogDebug(...) ((void)0) 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogDebugVerbose(...) ((void)0) 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogThreaded(...) ((void)0) 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogThreadedIf(...) ((void)0) 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogError(...) ((void)0) 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogFatalError(...) ((void)0) 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogVerbose(...) ((void)0) 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogWarning(...) ((void)0) 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogWarningVerbose(...) ((void)0) 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogGetLogFile() ((FILE *)NULL) 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogSetLogFile(f) ((void)0) 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogCheckLogBit(bit) ((bool)false) 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogSetLogMask(mask) ((uint32_t)0u) 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogGetLogMask() ((uint32_t)0u) 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogToASL() ((void)0) 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogToFile() ((void)0) 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLogCloseLogFile() ((void)0) 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // #else defined(DNBLOG_ENABLED) 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifdef __cplusplus 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // #ifndef __DNBLog_h__ 99