⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mvlog.c

📁 此为marvell6081芯片的驱动源码
💻 C
字号:
/*-------------C file-----------------------------*/
#include "mvOs.h"
#include <stdio.h>
#include <stdarg.h> 


#if defined (MV_LOG_DEBUG) || defined (MV_LOG_ERROR)

static char* mvLogMsgType[MV_MAX_MESSAGE_TYPE] = {
                " (DEBUG) ", 
                " (DEBUG INIT) " , 
                " (DEBUG_INTERRUPTS) ",
                " (DEBUG SATA LINK) ",
                " (DEBUG UDMA COMMAND) ",
                " (DEBUG NON UDMA COMMAND) ",
                " (ERROR) ",
                " (DEBUG_PM) ",
                };

static MV_U8 mvLogFilterMask[MV_MAX_MESSAGE_TYPE] = 
                    {MV_DEBUG_MASK, 
                     MV_DEBUG_INIT_MASK, 
                     MV_DEBUG_INTERRUPTS_MASK, 
                     MV_DEBUG_SATA_LINK_MASK, 
                     MV_DEBUG_UDMA_COMMAND_MASK, 
                     MV_DEBUG_NON_UDMA_COMMAND_MASK, 
                     MV_DEBUG_ERROR_MASK, 
                     MV_DEBUG_PM_MASK};

static MV_LOG_FILTER_HEADER mvLogInstance[MV_MAX_LOG_MODULES] = 
    {
        {MV_FALSE, 0, NULL},    
        {MV_FALSE, 0, NULL},
        {MV_FALSE, 0, NULL},
        {MV_FALSE, 0, NULL},
        {MV_FALSE, 0, NULL},
        {MV_FALSE, 0, NULL},
        {MV_FALSE, 0, NULL},
        {MV_FALSE, 0, NULL},
    };

static char szMessageBuffer[1024];


MV_BOOLEAN mvLogRegisterModule(MV_U8 moduleId, MV_U8 filterMask, char* name)
{
    if (moduleId >= MV_MAX_LOG_MODULES)
    {
        return MV_FALSE;
    }
    if (mvLogInstance[moduleId].used == MV_TRUE)
    {
        return MV_FALSE;
    }
    if (name == NULL)
    {
        return MV_FALSE;
    }
    mvLogInstance[moduleId].filterMask = filterMask;
    mvLogInstance[moduleId].name = name;
    mvLogInstance[moduleId].used = MV_TRUE;
    return MV_TRUE;
}

MV_BOOLEAN mvLogSetModuleFilter(MV_U8 moduleId, MV_U8 filterMask)
{
    if (moduleId >= MV_MAX_LOG_MODULES)
    {
        return MV_FALSE;
    }
    if (mvLogInstance[moduleId].used == MV_FALSE)
    {
        return MV_FALSE;
    }
    mvLogInstance[moduleId].filterMask = filterMask;
    return MV_TRUE;
}


MV_U8 mvLogGetModuleFilter(MV_U8 moduleId)
{
    if (moduleId >= MV_MAX_LOG_MODULES)
    {
        return 0;
    }
    if (mvLogInstance[moduleId].used == MV_FALSE)
    {
        return 0;
    }
    return mvLogInstance[moduleId].filterMask;  
}

void mvLogMsg(MV_U8 moduleId, MV_U8 type, char* format, ...)
{
    int len;
    va_list args;
    if (moduleId >= MV_MAX_LOG_MODULES)
    {
        return;
    }
    if (type >= MV_MAX_MESSAGE_TYPE)
    {
        return;
    }

    if ((moduleId != MV_RAW_MSG_ID) &&
        ((mvLogInstance[moduleId].used == MV_FALSE) ||
        ((mvLogInstance[moduleId].filterMask & mvLogFilterMask[type]) == 0)))
    {
        return;
    }
    if (moduleId != MV_RAW_MSG_ID)
    {   
        len = sprintf(szMessageBuffer, "%s%s",
            mvLogInstance[moduleId].name, mvLogMsgType[type]);    
    }
    else
    {
        len = 0;
    }
    va_start(args, format);
    vsprintf(&szMessageBuffer[len], format, args);
    va_end(args);
    MV_LOG_PRINT(szMessageBuffer);    
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -