123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- /*
- * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of NVIDIA CORPORATION nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- /**
- * @file
- * <b>NVIDIA Multimedia API: Logging API</b>
- *
- * @brief Description: This file defines macros for logging messages.
- */
- #ifndef __NV_LOGGING_H_
- #define __NV_LOGGING_H_
- #include <iostream>
- #include <sstream>
- /**
- *
- * @defgroup l4t_mm_nvlogging_group Logging API
- *
- * This file defines macros that provide message logging
- * functionality.
- *
- * @ingroup aa_framework_api_group
- * @{
- */
- /**
- * Specifies the log level for Information messages.
- */
- #define LOG_LEVEL_INFO 0
- /**
- * Specifies the log level for Error messages.
- */
- #define LOG_LEVEL_ERROR 1
- /**
- * Specifies the log level for Warning messages.
- */
- #define LOG_LEVEL_WARN 2
- /**
- * Specifies the log level for Debug messages.
- */
- #define LOG_LEVEL_DEBUG 3
- /**
- * Holds the current log level at runtime by assignment of one of the
- * @c LOG_LEVEL_* values.
- */
- extern int log_level;
- /**
- * Specifies the default log level.
- */
- #define DEFAULT_LOG_LEVEL LOG_LEVEL_ERROR
- /**
- * @cond
- */
- #define stringify(s) #s
- #define xstringify(s) stringify(s)
- #define __LINE_NUM_STR__ xstringify(__LINE__)
- extern const char *log_level_name[];
- /**
- * @endcond
- */
- /**
- *
- * Prints log messages.
- *
- * Prints a log message only if the current log_level is greater
- * than or equal to the level of the message.
- *
- * Messages are in the following form:
- * [LEVEL] (FILE: LINE_NUM) Message
- *
- * @param[in] level The Log level of the message.
- * @param[in] str1 The NULL-terminated char array to print.
- */
- #define PRINT_MSG(level, str1) if(level <= log_level) { \
- std::ostringstream ostr; \
- ostr << "[" << log_level_name[level] << "] (" << \
- __FILE__ << ":" __LINE_NUM_STR__ ") " << \
- str1 << std::endl; \
- std::cerr << ostr.str(); \
- }
- /**
- * Prints a log message of level LOG_LEVEL_INFO.
- */
- #define INFO_MSG(str) PRINT_MSG(LOG_LEVEL_INFO, str)
- /**
- * Prints a component-specific log message of level LOG_LEVEL_INFO.
- * This is used by the components internally and should not be used by
- * the application.
- *
- * Messages are in the following form:
- * [LEVEL] (FILE: LINE_NUM) <comp_name> <message_content>
- */
- #define COMP_INFO_MSG(str) INFO_MSG("<" << comp_name << "> " << str)
- /**
- * Prints a category-specific (Component type) system error log
- * message of level LOG_LEVEL_INFO. This is used by the components
- * internally and should not be used by the application.
- *
- * Messages are in the following form:
- * [LEVEL] (FILE: LINE_NUM) <cat_name> <message_content>
- */
- #define CAT_INFO_MSG(str) INFO_MSG("<" CAT_NAME "> " << str)
- /**
- * Prints a log message of level LOG_LEVEL_ERROR.
- */
- #define ERROR_MSG(str) PRINT_MSG(LOG_LEVEL_ERROR, str)
- /**
- * Prints a component-specific log message of level
- * LOG_LEVEL_ERROR. This is used by the components internally
- * and should not be used by the application.
- *
- * Messages are in the following form:
- * [LEVEL] (FILE:LINE_NUM) <comp_name> <message_content>
- */
- #define COMP_ERROR_MSG(str) ERROR_MSG("<" << comp_name << "> " << str)
- /**
- * Prints a category-specific (Component type) log message of level
- * LOG_LEVEL_ERROR. This is used by the components internally and
- * should not be used by the application.
- *
- * Messages are in the following form:
- * [LEVEL] (FILE:LINE_NUM) <cat_name> <message_content>
- */
- #define CAT_ERROR_MSG(str) ERROR_MSG("<" CAT_NAME "> " << str)
- /**
- * Prints a system error log message of level LOG_LEVEL_ERROR with
- * the string description of the errno value appended.
- */
- #define SYS_ERROR_MSG(str) ERROR_MSG(str << ": " << strerror(errno))
- /**
- * Prints a component-specific system error log message of level
- * LOG_LEVEL_ERROR. This is used by the components internally and
- * should not be used by the application.
- *
- * Messages are in the following form:
- * [LEVEL] (FILE:LINE_NUM) <comp_name> <message_content>
- */
- #define COMP_SYS_ERROR_MSG(str) SYS_ERROR_MSG("<" << comp_name << "> " << str)
- /**
- * Prints a category-specific (Component type) system error log
- * message of level LOG_LEVEL_ERROR. This is used by the components
- * internally and should not be used by the application.
- *
- * Messages are in the following form:
- * [LEVEL] (FILE:LINE_NUM) <cat_name> <message_content>
- */
- #define CAT_SYS_ERROR_MSG(str) SYS_ERROR_MSG("<" CAT_NAME "> " << str)
- /**
- * Prints a log message of level LOG_LEVEL_WARN.
- */
- #define WARN_MSG(str) PRINT_MSG(LOG_LEVEL_WARN, str)
- /**
- * Prints a component-specific log message of level LOG_LEVEL_WARN.
- * This is used by the components internally and should not be used by
- * the application.
- *
- * Messages are in the following form:
- * [LEVEL] (FILE:LINE_NUM) <comp_name> <message_content>
- */
- #define COMP_WARN_MSG(str) WARN_MSG("<" << comp_name << "> :" << str)
- /**
- * Print a category-specific (Component type) log message of level
- * LOG_LEVEL_WARN.
- * This is used by the components internally and should not be used by the
- * application.
- *
- * Messages are in the following form:
- * [LEVEL] (FILE:LINE_NUM) <cat_name> <message_content>
- */
- #define CAT_WARN_MSG(str) WARN_MSG("<" CAT_NAME "> " << str)
- /**
- * Prints a log message of level LOG_LEVEL_DEBUG.
- */
- #define DEBUG_MSG(str) PRINT_MSG(LOG_LEVEL_DEBUG, str)
- /**
- * Prints a component-specific log message of level LOG_LEVEL_DEBUG.
- * This is used by the components internally and should not be used by the
- * application.
- *
- * Messages are in the following form:
- * [LEVEL] (FILE:LINE_NUM) <comp_name> <message_content>
- */
- #define COMP_DEBUG_MSG(str) DEBUG_MSG("<" << comp_name << "> :" << str)
- /**
- * Prints a category-specific (Component type) log message of level
- * LOG_LEVEL_DEBUG. This is used by the components internally and
- * should not be used by the application.
- *
- * Messages are in the following form:
- * [LEVEL] (FILE:LINE_NUM) <cat_name> <message_content>
- */
- #define CAT_DEBUG_MSG(str) DEBUG_MSG("<" CAT_NAME "> " << str)
- #endif
- /** @} */
|