Changeset 690

Show
Ignore:
Timestamp:
11/03/07 09:38:39 (15 years ago)
Author:
ppalmers
Message:

some small changes on the backlog:
- locks the flush_lock such that the backlog is not interrupted by normal messages
- allows to specify a minimum level the messages should have to be put in the backlog
- add another level of debugging

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/debugmodule/debugmodule.cpp

    r681 r690  
    8686    va_list arg; 
    8787 
    88     va_start( arg, format ); 
    89     DebugModuleManager::instance()->backlog_va_print( format, arg ); 
    90     va_end( arg ); 
     88    if (level <= BACKLOG_MIN_LEVEL) { 
     89        va_start( arg, format ); 
     90        DebugModuleManager::instance()->backlog_va_print( format, arg ); 
     91        va_end( arg ); 
     92    } 
    9193 
    9294    if ( level > m_level ) { 
     
    117119        fname=f; 
    118120    } 
    119      
     121 
    120122    // add a timing timestamp 
    121123    struct timespec ts; 
    122124    clock_gettime(CLOCK_MONOTONIC, &ts); 
    123125    uint32_t ts_usec=(uint32_t)(ts.tv_sec * 1000000LL + ts.tv_nsec / 1000LL); 
    124      
    125     va_start( arg, format ); 
    126     DebugModuleManager::instance()->backlog_print( "%010lu: %s (%s)[%4d] %s: ",  
    127                  ts_usec, getPreSequence( level ), 
    128                  fname,  line,  function ); 
    129     DebugModuleManager::instance()->backlog_va_print( format, arg ); 
    130     DebugModuleManager::instance()->backlog_print( "%s", getPostSequence( level ) ); 
    131     va_end( arg ); 
     126 
     127    if (level <= BACKLOG_MIN_LEVEL) { 
     128        va_start( arg, format ); 
     129        DebugModuleManager::instance()->backlog_print( "%010lu: %s (%s)[%4d] %s: ",  
     130                    ts_usec, getPreSequence( level ), 
     131                    fname,  line,  function ); 
     132        DebugModuleManager::instance()->backlog_va_print( format, arg ); 
     133        DebugModuleManager::instance()->backlog_print( "%s", getPostSequence( level ) ); 
     134        va_end( arg ); 
     135    } 
    132136 
    133137    if ( level > m_level ) { 
     
    343347DebugModuleManager::showBackLog() 
    344348{ 
     349     DebugModuleManager *m=DebugModuleManager::instance(); 
     350    // locking the flush lock ensures that the backlog is 
     351    // printed as one entity 
     352    pthread_mutex_lock(&m->mb_flush_lock); 
    345353    fprintf(stderr, "=====================================================\n"); 
    346354    fprintf(stderr, "* BEGIN OF BACKLOG PRINT\n"); 
     
    356364    fprintf(stderr, "* END OF BACKLOG PRINT\n"); 
    357365    fprintf(stderr, "=====================================================\n"); 
     366    pthread_mutex_unlock(&m->mb_flush_lock); 
    358367} 
    359368 
  • trunk/libffado/src/debugmodule/debugmodule.h

    r671 r690  
    3434typedef short debug_level_t; 
    3535 
    36 #define DEBUG_MAX_MESSAGE_LENGTH 1024 
     36#define DEBUG_LEVEL_FATAL          0 
     37#define DEBUG_LEVEL_ERROR          1 
     38#define DEBUG_LEVEL_WARNING        2 
     39#define DEBUG_LEVEL_NORMAL         3 
     40#define DEBUG_LEVEL_INFO           4 
     41#define DEBUG_LEVEL_VERBOSE        5 
     42#define DEBUG_LEVEL_VERY_VERBOSE   6 
     43#define DEBUG_LEVEL_ULTRA_VERBOSE  7 
     44 
     45#define DEBUG_MAX_MESSAGE_LENGTH 512 
    3746 
    3847/* MB_NEXT() relies on the fact that MB_BUFFERS is a power of two */ 
     
    4453 
    4554// the backlog is a similar buffer as the message buffer 
    46 #define BACKLOG_MB_BUFFERS      (512
     55#define BACKLOG_MB_BUFFERS      (256
    4756#define BACKLOG_MB_NEXT(index)  (((index)+1) & (BACKLOG_MB_BUFFERS-1)) 
    4857#define BACKLOG_MB_BUFFERSIZE   DEBUG_MAX_MESSAGE_LENGTH 
     58#define BACKLOG_MIN_LEVEL       DEBUG_LEVEL_VERY_VERBOSE 
     59 
    4960 
    5061#define debugFatal( format, args... )                               \ 
     
    160171public: 
    161172    enum { 
    162         eDL_Fatal       = 0, 
    163         eDL_Error       = 1, 
    164         eDL_Warning     = 2, 
    165         eDL_Normal      = 3, 
    166         eDL_Info        = 4, 
    167         eDL_Verbose     = 5, 
    168         eDL_VeryVerbose = 6, 
     173        eDL_Fatal        = DEBUG_LEVEL_FATAL, 
     174        eDL_Error        = DEBUG_LEVEL_ERROR, 
     175        eDL_Warning      = DEBUG_LEVEL_WARNING, 
     176        eDL_Normal       = DEBUG_LEVEL_NORMAL, 
     177        eDL_Info         = DEBUG_LEVEL_INFO, 
     178        eDL_Verbose      = DEBUG_LEVEL_VERBOSE, 
     179        eDL_VeryVerbose  = DEBUG_LEVEL_VERY_VERBOSE, 
     180        eDL_UltraVerbose = DEBUG_LEVEL_ULTRA_VERBOSE, 
    169181    } EDebugLevel; 
    170182 
     
    198210    debug_level_t m_level; 
    199211}; 
    200  
    201 #define DEBUG_LEVEL_NORMAL          DebugModule::eDL_Normal 
    202 #define DEBUG_LEVEL_INFO            DebugModule::eDL_Info 
    203 #define DEBUG_LEVEL_VERBOSE         DebugModule::eDL_Verbose 
    204 #define DEBUG_LEVEL_VERY_VERBOSE    DebugModule::eDL_VeryVerbose 
    205212 
    206213