blob: d434a738dff3dbef294022cdccf6d0596185bd30 [file] [log] [blame]
// Copyright 2024 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_GRAPHICS_DISPLAY_LIB_DRIVER_FRAMEWORK_MIGRATION_UTILS_LOGGING_LOGGING_H_
#define SRC_GRAPHICS_DISPLAY_LIB_DRIVER_FRAMEWORK_MIGRATION_UTILS_LOGGING_LOGGING_H_
#include <zircon/compiler.h>
#include <cstdarg>
#include <cstdint>
// This header provides a compatibility layer for both DFv1 and DFv2 logging.
//
// Drivers should not use the types and methods defined in this header and
// should always use the macros defined in `zxlogf.h` instead.
namespace display::internal {
// Log severity compatible with both the DFv1 (DDK) severity and the DFv2
// (Fuchsia structured syslog) severity.
enum class DriverLogSeverity : uint8_t {
// Equivalent to `DDK_LOG_TRACE` and `FUCHSIA_LOG_TRACE`.
kTRACE = 0x10,
// Equivalent to `DDK_LOG_DEBUG` and `FUCHSIA_LOG_DEBUG`.
kDEBUG = 0x20,
// Equivalent to `DDK_LOG_INFO` and `FUCHSIA_LOG_INFO`.
kINFO = 0x30,
// Equivalent to `DDK_LOG_WARNING` and `FUCHSIA_LOG_WARNING`.
kWARNING = 0x40,
// Equivalent to `DDK_LOG_ERROR` and `FUCHSIA_LOG_ERROR`.
kERROR = 0x50,
// Equivalent to `DDK_LOG_FATAL` and `FUCHSIA_LOG_FATAL`.
kFATAL = 0x60,
};
// Do not use this function directly. Use `zxlog_level_enabled()` defined in
// `zxlogf.h` instead.
bool IsLogSeverityEnabled(DriverLogSeverity severity);
// Do not use this function directly. Use `zxlogf()` defined in `zxlogf.h`
// instead.
void LogVariadicArgs(DriverLogSeverity severity, const char* file, int line, const char* format,
va_list args);
// Do not use this function directly. Use `zxlogf()` defined in `zxlogf.h`
// instead.
inline void __PRINTFLIKE(4, 5)
Log(DriverLogSeverity severity, const char* file, int line, const char* format, ...) {
va_list args;
va_start(args, format);
LogVariadicArgs(severity, file, line, format, args);
va_end(args);
}
} // namespace display::internal
#endif // SRC_GRAPHICS_DISPLAY_LIB_DRIVER_FRAMEWORK_MIGRATION_UTILS_LOGGING_LOGGING_H_