/* uniklog.h * * Copyright (C) 2010 - 2013 UNISYS CORPORATION * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or * NON INFRINGEMENT. See the GNU General Public License for more * details. */ /* This module contains macros to aid developers in logging messages. * * This module is affected by the DEBUG compiletime option. * */ #ifndef __UNIKLOG_H__ #define __UNIKLOG_H__ #include /* * # DBGINF * * \brief Log debug informational message - log a LOG_INFO message only * if DEBUG compiletime option enabled * * \param devname the device name of the device reporting this message, or * NULL if this message is NOT device-related. * \param fmt printf()-style format string containing the message to log. * \param args Optional arguments to be formatted and inserted into the * format string. * \return nothing * * Log a message at the LOG_INFO level, but only if DEBUG is enabled. If * DEBUG is disabled, this expands to a no-op. */ /* * # DBGVER * * \brief Log debug verbose message - log a LOG_DEBUG message only if * DEBUG compiletime option enabled * * \param devname the device name of the device reporting this message, or * NULL if this message is NOT device-related. * \param fmt printf()-style format string containing the message to log. * \param args Optional arguments to be formatted and inserted into the * format string. * \return nothing * * Log a message at the LOG_DEBUG level, but only if DEBUG is enabled. If * DEBUG is disabled, this expands to a no-op. Note also that LOG_DEBUG * messages can be enabled/disabled at runtime as well. */ #define DBGINFDEV(devname, fmt, args...) do { } while (0) #define DBGVERDEV(devname, fmt, args...) do { } while (0) #define DBGINF(fmt, args...) do { } while (0) #define DBGVER(fmt, args...) do { } while (0) /* * # LOGINF * * \brief Log informational message - logs a message at the LOG_INFO level * * \param devname the device name of the device reporting this message, or * NULL if this message is NOT device-related. * \param fmt printf()-style format string containing the message to log. * \param args Optional arguments to be formatted and inserted into the * format string. * \return nothing * * Logs the specified message at the LOG_INFO level. */ #define LOGINF(fmt, args...) pr_info(fmt, ## args) #define LOGINFDEV(devname, fmt, args...) \ pr_info("%s " fmt, devname, ## args) #define LOGINFDEVX(devno, fmt, args...) \ pr_info("dev%d " fmt, devno, ## args) #define LOGINFNAME(vnic, fmt, args...) \ do { \ if (vnic != NULL) { \ pr_info("%s " fmt, vnic->name, ## args); \ } else { \ pr_info(fmt, ## args); \ } \ } while (0) /* * # LOGVER * * \brief Log verbose message - logs a message at the LOG_DEBUG level, * which can be disabled at runtime * * \param devname the device name of the device reporting this message, or * NULL if this message is NOT device-related. * \param fmt printf()-style format string containing the message to log. * \param args Optional arguments to be formatted and inserted into the format * \param string. * \return nothing * * Logs the specified message at the LOG_DEBUG level. Note also that * LOG_DEBUG messages can be enabled/disabled at runtime as well. */ #define LOGVER(fmt, args...) pr_debug(fmt, ## args) #define LOGVERDEV(devname, fmt, args...) \ pr_debug("%s " fmt, devname, ## args) #define LOGVERNAME(vnic, fmt, args...) \ do { \ if (vnic != NULL) { \ pr_debug("%s " fmt, vnic->name, ## args); \ } else { \ pr_debug(fmt, ## args); \ } \ } while (0) /* * # LOGERR * * \brief Log error message - logs a message at the LOG_ERR level, * including source line number information * * \param devname the device name of the device reporting this message, or * NULL if this message is NOT device-related. * \param fmt printf()-style format string containing the message to log. * \param args Optional arguments to be formatted and inserted into the format * \param string. * \return nothing * * Logs the specified error message at the LOG_ERR level. It will also * include the file, line number, and function name of where the error * originated in the log message. */ #define LOGERR(fmt, args...) pr_err(fmt, ## args) #define LOGERRDEV(devname, fmt, args...) \ pr_err("%s " fmt, devname, ## args) #define LOGERRDEVX(devno, fmt, args...) \ pr_err("dev%d " fmt, devno, ## args) #define LOGERRNAME(vnic, fmt, args...) \ do { \ if (vnic != NULL) { \ pr_err("%s " fmt, vnic->name, ## args); \ } else { \ pr_err(fmt, ## args); \ } \ } while (0) #define LOGORDUMPERR(seqfile, fmt, args...) do { \ if (seqfile) { \ seq_printf(seqfile, fmt, ## args); \ } else { \ LOGERR(fmt, ## args); \ } \ } while (0) /* * # LOGWRN * * \brief Log warning message - Logs a message at the LOG_WARNING level, * including source line number information * * \param devname the device name of the device reporting this message, or * NULL if this message is NOT device-related. * \param fmt printf()-style format string containing the message to log. * \param args Optional arguments to be formatted and inserted into the format * \param string. * \return nothing * * Logs the specified error message at the LOG_WARNING level. It will also * include the file, line number, and function name of where the error * originated in the log message. */ #define LOGWRN(fmt, args...) pr_warn(fmt, ## args) #define LOGWRNDEV(devname, fmt, args...) \ pr_warn("%s " fmt, devname, ## args) #define LOGWRNNAME(vnic, fmt, args...) \ do { \ if (vnic != NULL) { \ pr_warn("%s " fmt, vnic->name, ## args); \ } else { \ pr_warn(fmt, ## args); \ } \ } while (0) #endif /* __UNIKLOG_H__ */