ha/service-mgmt/sm-common/src/sm_debug.h

132 lines
4.7 KiB
C

//
// Copyright (c) 2014 Wind River Systems, Inc.
//
// SPDX-License-Identifier: Apache-2.0
//
#ifndef __SM_DEBUG_H__
#define __SM_DEBUG_H__
#include <stdbool.h>
#include "sm_types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum
{
SM_DEBUG_LOG,
SM_DEBUG_SCHED_LOG,
} SmDebugLogTypeT;
typedef enum
{
SM_DEBUG_LOG_LEVEL_ERROR,
SM_DEBUG_LOG_LEVEL_INFO,
SM_DEBUG_LOG_LEVEL_DEBUG,
SM_DEBUG_LOG_LEVEL_VERBOSE,
} SmDebugLogLevelT;
// ****************************************************************************
// Debug - Log Level String
// ========================
extern const char* sm_debug_log_level_str( SmDebugLogLevelT level );
// ****************************************************************************
// ****************************************************************************
// Debug - Set Log Level
// =====================
extern void sm_debug_set_log_level( SmDebugLogLevelT level );
// ****************************************************************************
// ****************************************************************************
// Debug - Do Log
// ==============
extern bool sm_debug_do_log( const char* file_name, SmDebugLogLevelT level );
// ****************************************************************************
// ****************************************************************************
// Debug - Log
// ===========
extern void sm_debug_log( SmDebugLogTypeT type, const char* format, ... )
__attribute__ ((format (printf, 2, 3)));
// format string is parameter #2 and follows the printf formatting,
// variable arguments start at parameter #3
// ****************************************************************************
// ****************************************************************************
// Debug - Get Thread Information
// ==============================
extern const char* sm_debug_get_thread_info( void );
// ****************************************************************************
// ****************************************************************************
// Debug - Set Thread Information
// ==============================
extern void sm_debug_set_thread_info( void );
// ****************************************************************************
// ****************************************************************************
// Debug - Scheduler Log
// =====================
extern void sm_debug_sched_log( SmDebugLogTypeT type, const char* format, ... );
// ****************************************************************************
// ****************************************************************************
// Debug - Scheduler Log Start
// ===========================
extern void sm_debug_sched_log_start( char* domain );
// ****************************************************************************
// ****************************************************************************
// Debug - Scheduler Log Done
// ==========================
extern void sm_debug_sched_log_done( char* domain );
// ****************************************************************************
// ****************************************************************************
// Debug - Initialize
// ==================
extern SmErrorT sm_debug_initialize( void );
// ****************************************************************************
// ****************************************************************************
// Debug - Finalize
// ================
extern SmErrorT sm_debug_finalize( void );
// ****************************************************************************
#define DPRINTF( level, format, args... ) \
if( sm_debug_do_log( __FILE__, level ) ) \
sm_debug_log( SM_DEBUG_LOG, "%s: %s: %s(%i): " format, \
sm_debug_log_level_str( level ), \
sm_debug_get_thread_info(), \
__FILE__, __LINE__, ##args )
#define DPRINTFE( format, args... ) \
DPRINTF( SM_DEBUG_LOG_LEVEL_ERROR, format, ##args )
#define DPRINTFI( format, args... ) \
DPRINTF( SM_DEBUG_LOG_LEVEL_INFO, format, ##args )
#define DPRINTFD( format, args... ) \
DPRINTF( SM_DEBUG_LOG_LEVEL_DEBUG, format, ##args )
#define DPRINTFV( format, args... ) \
DPRINTF( SM_DEBUG_LOG_LEVEL_VERBOSE, format, ##args )
#define SCHED_LOG_START( domain, format, args... ) \
sm_debug_sched_log_start( domain ); \
sm_debug_sched_log( SM_DEBUG_SCHED_LOG, "%s: " format, domain, ##args )
#define SCHED_LOG( domain, format, args... ) \
sm_debug_sched_log( SM_DEBUG_SCHED_LOG, "%s: " format, domain, ##args )
#define SCHED_LOG_DONE( domain, format, args... ) \
sm_debug_sched_log( SM_DEBUG_SCHED_LOG, "%s: " format, domain, ##args ); \
sm_debug_sched_log_done( domain )
#ifdef __cplusplus
}
#endif
#endif // __SM_DEBUG_H__