The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/isci/isci_logger.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause
    3  *
    4  * BSD LICENSE
    5  *
    6  * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
    7  * All rights reserved.
    8  *
    9  * Redistribution and use in source and binary forms, with or without
   10  * modification, are permitted provided that the following conditions
   11  * are met:
   12  *
   13  *   * Redistributions of source code must retain the above copyright
   14  *     notice, this list of conditions and the following disclaimer.
   15  *   * Redistributions in binary form must reproduce the above copyright
   16  *     notice, this list of conditions and the following disclaimer in
   17  *     the documentation and/or other materials provided with the
   18  *     distribution.
   19  *
   20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   31  */
   32 
   33 #include <sys/cdefs.h>
   34 __FBSDID("$FreeBSD$");
   35 
   36 #include <dev/isci/isci.h>
   37 
   38 #include <dev/isci/scil/scif_user_callback.h>
   39 #include <dev/isci/scil/scic_user_callback.h>
   40 #include <dev/isci/scil/sci_logger.h>
   41 
   42 #include <machine/stdarg.h>
   43 #include <sys/time.h>
   44 
   45 #define ERROR_LEVEL     0
   46 #define WARNING_LEVEL   1
   47 #define TRACE_LEVEL     2
   48 #define INFO_LEVEL      3
   49 
   50 void
   51 isci_log_message(uint32_t verbosity, char *log_message_prefix,
   52     char *log_message, ...)
   53 {
   54         va_list argp;
   55         char buffer[512];
   56         struct timeval tv;
   57 
   58         if (verbosity > g_isci_debug_level)
   59                 return;
   60 
   61         va_start (argp, log_message);
   62         vsnprintf(buffer, sizeof(buffer)-1, log_message, argp);
   63         va_end(argp);
   64         microtime(&tv);
   65 
   66         printf("isci: %d:%06d %s %s", (int)tv.tv_sec, (int)tv.tv_usec,
   67             log_message_prefix, buffer);
   68 }
   69 
   70 
   71 #ifdef SCI_LOGGING
   72 #define SCI_ENABLE_LOGGING_ERROR        1
   73 #define SCI_ENABLE_LOGGING_WARNING      1
   74 #define SCI_ENABLE_LOGGING_INFO         1
   75 #define SCI_ENABLE_LOGGING_TRACE        1
   76 #define SCI_ENABLE_LOGGING_STATES       1
   77 
   78 #define ISCI_LOG_MESSAGE(                       \
   79         logger_object,                          \
   80         log_object_mask,                        \
   81         log_message,                            \
   82         verbosity,                              \
   83         log_message_prefix                      \
   84 )                                               \
   85 {                                               \
   86         va_list argp;                           \
   87         char buffer[512];                       \
   88                                                 \
   89         if (!sci_logger_is_enabled(logger_object, log_object_mask, verbosity)) \
   90                 return;                         \
   91                                                 \
   92         va_start (argp, log_message);           \
   93         vsnprintf(buffer, sizeof(buffer)-1, log_message, argp); \
   94         va_end(argp);                           \
   95                                                 \
   96         /* prepend the "object:verbosity_level:" */ \
   97         isci_log_message(verbosity, log_message_prefix, buffer); \
   98 }
   99 #endif /* SCI_LOGGING */
  100 
  101 
  102 #ifdef SCI_ENABLE_LOGGING_ERROR
  103 /**
  104  * @brief In this method the user is expected to log the supplied
  105  *        error information.  The user must be capable of handling variable
  106  *        length argument lists and should consider prepending the fact
  107  *        that this is an error from the framework.
  108  *
  109  * @param[in]  logger_object This parameter specifies the logger object
  110  *             associated with this message.
  111  * @param[in]  log_object_mask This parameter specifies the log objects
  112  *             for which this message is being generated.
  113  * @param[in]  log_message This parameter specifies the message to be logged.
  114  *
  115  * @return none
  116  */
  117 void scif_cb_logger_log_error(SCI_LOGGER_HANDLE_T logger_object,
  118     uint32_t log_object_mask, char *log_message, ...)
  119 {
  120 
  121         ISCI_LOG_MESSAGE(logger_object, log_object_mask, log_message,
  122             SCI_LOG_VERBOSITY_ERROR, "FRAMEWORK: ERROR: ");
  123 }
  124 #endif
  125 
  126 #ifdef SCI_ENABLE_LOGGING_WARNING
  127 /**
  128  * @brief In this method the user is expected to log the supplied warning
  129  *        information.  The user must be capable of handling variable
  130  *        length argument lists and should consider prepending the fact
  131  *        that this is a warning from the framework.
  132  *
  133  * @param[in]  logger_object This parameter specifies the logger object
  134  *             associated with this message.
  135  * @param[in]  log_object_mask This parameter specifies the log objects
  136  *             for which this message is being generated.
  137  * @param[in]  log_message This parameter specifies the message to be logged.
  138  *
  139  * @return none
  140  */
  141 void
  142 scif_cb_logger_log_warning(SCI_LOGGER_HANDLE_T logger_object,
  143     uint32_t log_object_mask, char *log_message, ...)
  144 {
  145 
  146         ISCI_LOG_MESSAGE(logger_object, log_object_mask, log_message,
  147             SCI_LOG_VERBOSITY_WARNING, "FRAMEWORK: WARNING: ");
  148 }
  149 #endif
  150 
  151 #ifdef SCI_ENABLE_LOGGING_INFO
  152 /**
  153  * @brief In this method the user is expected to log the supplied debug
  154  *        information.  The user must be capable of handling variable
  155  *        length argument lists and should consider prepending the fact
  156  *        that this is a debug message from the framework.
  157  *
  158  * @param[in]  logger_object This parameter specifies the logger object
  159  *             associated with this message.
  160  * @param[in]  log_object_mask This parameter specifies the log objects
  161  *             for which this message is being generated.
  162  * @param[in]  log_message This parameter specifies the message to be logged.
  163  *
  164  * @return none
  165  */
  166 void
  167 scif_cb_logger_log_info(SCI_LOGGER_HANDLE_T logger_object,
  168     uint32_t log_object_mask, char *log_message, ...)
  169 {
  170 
  171         ISCI_LOG_MESSAGE(logger_object, log_object_mask, log_message,
  172             SCI_LOG_VERBOSITY_INFO, "FRAMEWORK: INFO: ");
  173 }
  174 #endif
  175 
  176 #ifdef SCI_ENABLE_LOGGING_TRACE
  177 /**
  178  * @brief In this method the user is expected to log the supplied function
  179  *        trace information.  The user must be capable of handling variable
  180  *        length argument lists and should consider prepending the fact
  181  *        that this is a function trace (i.e. entry/exit) message from the
  182  *        framework.
  183  *
  184  * @param[in]  logger_object This parameter specifies the logger object
  185  *             associated with this message.
  186  * @param[in]  log_object_mask This parameter specifies the log objects
  187  *             for which this message is being generated.
  188  * @param[in]  log_message This parameter specifies the message to be logged.
  189  *
  190  * @return none
  191  */
  192 void
  193 scif_cb_logger_log_trace(SCI_LOGGER_HANDLE_T logger_object,
  194     uint32_t log_object_mask, char *log_message, ...)
  195 {
  196 
  197         ISCI_LOG_MESSAGE(logger_object, log_object_mask, log_message,
  198             SCI_LOG_VERBOSITY_TRACE, "FRAMEWORK: TRACE: ");
  199 }
  200 #endif
  201 
  202 #ifdef SCI_ENABLE_LOGGING_STATES
  203 /**
  204  * @brief In this method the user is expected to log the supplied function
  205  *        state transition information.  The user must be capable of handling
  206  *        variable length argument lists and should consider prepending the
  207  *        fact that this is a function trace (i.e. entry/exit) message from
  208  *        the framework.
  209  *
  210  * @param[in]  logger_object This parameter specifies the logger object
  211  *             associated with this message.
  212  * @param[in]  log_object_mask This parameter specifies the log objects
  213  *             for which this message is being generated.
  214  * @param[in]  log_message This parameter specifies the message to be logged.
  215  *
  216  * @return none
  217  */
  218 void
  219 scif_cb_logger_log_states(SCI_LOGGER_HANDLE_T logger_object,
  220     uint32_t log_object_mask, char *log_message, ...)
  221 {
  222 
  223         ISCI_LOG_MESSAGE(logger_object, log_object_mask, log_message,
  224             SCI_LOG_VERBOSITY_STATES, "FRAMEWORK: STATE TRANSITION: ");
  225 }
  226 #endif
  227 
  228 #ifdef SCI_ENABLE_LOGGING_ERROR
  229 /**
  230  * @brief In this method the user is expected to log the supplied
  231  *        error information.  The user must be capable of handling variable
  232  *        length argument lists and should consider prepending the fact
  233  *        that this is an error from the core.
  234  *
  235  * @param[in]  logger_object This parameter specifies the logger object
  236  *             associated with this message.
  237  * @param[in]  log_object_mask This parameter specifies the log objects
  238  *             for which this message is being generated.
  239  * @param[in]  log_message This parameter specifies the message to be logged.
  240  *
  241  * @return none
  242  */
  243 void
  244 scic_cb_logger_log_error(SCI_LOGGER_HANDLE_T logger_object,
  245     uint32_t log_object_mask, char *log_message, ...)
  246 {
  247 
  248         ISCI_LOG_MESSAGE(logger_object, log_object_mask, log_message,
  249             SCI_LOG_VERBOSITY_ERROR, "CORE: ERROR: ");
  250 }
  251 #endif
  252 
  253 #ifdef SCI_ENABLE_LOGGING_WARNING
  254 /**
  255  * @brief In this method the user is expected to log the supplied warning
  256  *        information.  The user must be capable of handling variable
  257  *        length argument lists and should consider prepending the fact
  258  *        that this is a warning from the core.
  259  *
  260  * @param[in]  logger_object This parameter specifies the logger object
  261  *             associated with this message.
  262  * @param[in]  log_object_mask This parameter specifies the log objects
  263  *             for which this message is being generated.
  264  * @param[in]  log_message This parameter specifies the message to be logged.
  265  *
  266  * @return none
  267  */
  268 void
  269 scic_cb_logger_log_warning(SCI_LOGGER_HANDLE_T logger_object,
  270     uint32_t log_object_mask, char *log_message, ...)
  271 {
  272 
  273         ISCI_LOG_MESSAGE(logger_object, log_object_mask, log_message,
  274             SCI_LOG_VERBOSITY_WARNING, "CORE: WARNING: ");
  275 }
  276 #endif
  277 
  278 #ifdef SCI_ENABLE_LOGGING_INFO
  279 /**
  280  * @brief In this method the user is expected to log the supplied debug
  281  *        information.  The user must be capable of handling variable
  282  *        length argument lists and should consider prepending the fact
  283  *        that this is a debug message from the core.
  284  *
  285  * @param[in]  logger_object This parameter specifies the logger object
  286  *             associated with this message.
  287  * @param[in]  log_object_mask This parameter specifies the log objects
  288  *             for which this message is being generated.
  289  * @param[in]  log_message This parameter specifies the message to be logged.
  290  *
  291  * @return none
  292  */
  293 void
  294 scic_cb_logger_log_info(SCI_LOGGER_HANDLE_T logger_object,
  295     uint32_t log_object_mask, char *log_message, ...)
  296 {
  297 
  298         ISCI_LOG_MESSAGE(logger_object, log_object_mask, log_message,
  299             SCI_LOG_VERBOSITY_INFO, "CORE: INFO: ");
  300 }
  301 #endif
  302 
  303 #ifdef SCI_ENABLE_LOGGING_TRACE
  304 /**
  305  * @brief In this method the user is expected to log the supplied function
  306  *        trace information.  The user must be capable of handling variable
  307  *        length argument lists and should consider prepending the fact
  308  *        that this is a function trace (i.e. entry/exit) message from the
  309  *        core.
  310  *
  311  * @param[in]  logger_object This parameter specifies the logger object
  312  *             associated with this message.
  313  * @param[in]  log_object_mask This parameter specifies the log objects
  314  *             for which this message is being generated.
  315  * @param[in]  log_message This parameter specifies the message to be logged.
  316  *
  317  * @return none
  318  */
  319 void
  320 scic_cb_logger_log_trace(SCI_LOGGER_HANDLE_T logger_object,
  321     uint32_t log_object_mask, char *log_message, ...)
  322 {
  323 
  324         ISCI_LOG_MESSAGE(logger_object, log_object_mask, log_message,
  325             SCI_LOG_VERBOSITY_TRACE, "CORE: TRACE: ");
  326 }
  327 #endif
  328 
  329 #ifdef SCI_ENABLE_LOGGING_STATES
  330 /**
  331  * @brief In this method the user is expected to log the supplied function
  332  *        state transition information.  The user must be capable of handling
  333  *        variable length argument lists and should consider prepending the
  334  *        fact that this is a function trace (i.e. entry/exit) message from
  335  *        the core.
  336  *
  337  * @param[in]  logger_object This parameter specifies the logger object
  338  *             associated with this message.
  339  * @param[in]  log_object_mask This parameter specifies the log objects
  340  *             for which this message is being generated.
  341  * @param[in]  log_message This parameter specifies the message to be logged.
  342  *
  343  * @return none
  344  */
  345 void
  346 scic_cb_logger_log_states(SCI_LOGGER_HANDLE_T logger_object,
  347     uint32_t log_object_mask, char *log_message, ...)
  348 {
  349 
  350         ISCI_LOG_MESSAGE(logger_object, log_object_mask, log_message,
  351             SCI_LOG_VERBOSITY_STATES, "CORE: STATE TRANSITION: ");
  352 }
  353 #endif

Cache object: b0dafcb9b607d3c6a596bd3799529f8c


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.