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

Cache object: 77e8fc242b71ab06ea84f59e785a1c89


[ 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.