openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

bslcons.c (2489B)


      1 /*
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2019 Broadcom Inc. All rights reserved.
      6  *
      7  * Broadcom System Log Console Sink
      8  */
      9 
     10 #include <sal/core/libc.h> 
     11 #include <sal/appl/io.h> 
     12 #include <appl/diag/bslsink.h>
     13 #include <appl/diag/bslcons.h>
     14 #include <appl/diag/bslenable.h>
     15 
     16 static bslsink_sink_t console_sink;
     17 static int console_enabled = 1;
     18 static int thread_check_enabled = 0;
     19 
     20 STATIC int
     21 bslcons_vfprintf(void *file, const char *format, va_list args)
     22 {
     23     return sal_vprintf(format, args);
     24 }
     25 
     26 STATIC int
     27 bslcons_thread_check(bsl_meta_t *meta)
     28 {
     29     int i;
     30     int thread_id = sal_thread_id_get();
     31 
     32     if (bslenable_thread_get(meta->layer, meta->source, 0) == 0) {
     33         return 1;
     34     }
     35     for (i = 0; i < MAX_BSLENABLE_THREAD_COUNT; i ++) {
     36         if (thread_id == bslenable_thread_get(meta->layer, meta->source, i)) {
     37             return 1;
     38         }
     39     }
     40 
     41     return 0;
     42 }
     43 
     44 STATIC int
     45 bslcons_check(bsl_meta_t *meta)
     46 {
     47     if (!console_enabled) {
     48         return 0;
     49     }
     50     if (thread_check_enabled) {
     51         return bslcons_thread_check(meta);
     52     }
     53     return console_enabled;
     54 }
     55 
     56 int
     57 bslcons_init(void)
     58 {
     59     bslsink_sink_t *sink;
     60 
     61     /* Create console sink */
     62     sink = &console_sink;
     63     bslsink_sink_t_init(sink);
     64     sal_strncpy(sink->name, "console", sizeof(sink->name));
     65     sink->vfprintf = bslcons_vfprintf;
     66     sink->check = bslcons_check;
     67     sink->enable_range.min = bslSeverityOff+1;
     68 #ifdef BSL_TRACE_INCLUDE
     69     /* bslSeverityDebug will be handled by the trace sink by default */
     70     sink->enable_range.max = bslSeverityVerbose;
     71 #else
     72     sink->enable_range.max = bslSeverityCount-1;
     73 #endif
     74     sink->options = BSLSINK_OPT_NO_ECHO;
     75     bslsink_sink_add(sink);
     76 
     77     /* Configure log prefix */
     78     sal_strncpy(sink->prefix_format, "%u:%F: ",
     79                 sizeof(sink->prefix_format));
     80     sink->prefix_range.min = bslSeverityOff+1;
     81     sink->prefix_range.max = bslSeverityWarn;
     82 
     83     return 0;
     84 }
     85 
     86 int
     87 bslcons_is_enabled(void)
     88 {
     89     return console_enabled;
     90 }
     91 
     92 int
     93 bslcons_enable(int enable)
     94 {
     95     int cur_enable = bslcons_is_enabled();
     96 
     97     console_enabled = enable;
     98 
     99     return cur_enable;
    100 }
    101 
    102 int
    103 bslcons_thread_check_is_enabled(void)
    104 {
    105     return thread_check_enabled;
    106 }
    107 
    108 int
    109 bslcons_thread_check_enable(int enable)
    110 {
    111     int cur_enable = bslcons_thread_check_is_enabled();
    112 
    113     thread_check_enabled = enable;
    114 
    115     return cur_enable;
    116 }