|
Packit Service |
646995 |
/*
|
|
Packit Service |
646995 |
* Copyright (c) 2009-2011, Broadcom Corporation
|
|
Packit Service |
646995 |
* Copyright (c) 2014, QLogic Corporation
|
|
Packit Service |
646995 |
*
|
|
Packit Service |
646995 |
* Written by: Benjamin Li (benli@broadcom.com)
|
|
Packit Service |
646995 |
*
|
|
Packit Service |
646995 |
* All rights reserved.
|
|
Packit Service |
646995 |
*
|
|
Packit Service |
646995 |
* Redistribution and use in source and binary forms, with or without
|
|
Packit Service |
646995 |
* modification, are permitted provided that the following conditions
|
|
Packit Service |
646995 |
* are met:
|
|
Packit Service |
646995 |
* 1. Redistributions of source code must retain the above copyright
|
|
Packit Service |
646995 |
* notice, this list of conditions and the following disclaimer.
|
|
Packit Service |
646995 |
* 2. Redistributions in binary form must reproduce the above copyright
|
|
Packit Service |
646995 |
* notice, this list of conditions and the following disclaimer in the
|
|
Packit Service |
646995 |
* documentation and/or other materials provided with the distribution.
|
|
Packit Service |
646995 |
* 3. All advertising materials mentioning features or use of this software
|
|
Packit Service |
646995 |
* must display the following acknowledgement:
|
|
Packit Service |
646995 |
* This product includes software developed by Adam Dunkels.
|
|
Packit Service |
646995 |
* 4. The name of the author may not be used to endorse or promote
|
|
Packit Service |
646995 |
* products derived from this software without specific prior
|
|
Packit Service |
646995 |
* written permission.
|
|
Packit Service |
646995 |
*
|
|
Packit Service |
646995 |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
|
Packit Service |
646995 |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
Packit Service |
646995 |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
Packit Service |
646995 |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
Packit Service |
646995 |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
Packit Service |
646995 |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
Packit Service |
646995 |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
Packit Service |
646995 |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
Packit Service |
646995 |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
Packit Service |
646995 |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
Packit Service |
646995 |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
Packit Service |
646995 |
*
|
|
Packit Service |
646995 |
* logger.h - Logging Utilities
|
|
Packit Service |
646995 |
*
|
|
Packit Service |
646995 |
*/
|
|
Packit Service |
646995 |
#ifndef __LOGGER_H__
|
|
Packit Service |
646995 |
#define __LOGGER_H__
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
#include <pthread.h>
|
|
Packit Service |
646995 |
#include <stdio.h>
|
|
Packit Service |
646995 |
#include <time.h>
|
|
Packit Service |
646995 |
#include <stdint.h>
|
|
Packit Service |
646995 |
#include <sys/types.h>
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
/*******************************************************************************
|
|
Packit Service |
646995 |
* Logger Levels
|
|
Packit Service |
646995 |
******************************************************************************/
|
|
Packit Service |
646995 |
#define LOG_LEVEL_PACKET 5
|
|
Packit Service |
646995 |
#define LOG_LEVEL_DEBUG 4
|
|
Packit Service |
646995 |
#define LOG_LEVEL_INFO 3
|
|
Packit Service |
646995 |
#define LOG_LEVEL_WARN 2
|
|
Packit Service |
646995 |
#define LOG_LEVEL_ERR 1
|
|
Packit Service |
646995 |
#define LOG_LEVEL_UNKNOWN 0
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
#define LOG_LEVEL_PACKET_STR "PKT "
|
|
Packit Service |
646995 |
#define LOG_LEVEL_DEBUG_STR "DBG "
|
|
Packit Service |
646995 |
#define LOG_LEVEL_INFO_STR "INFO "
|
|
Packit Service |
646995 |
#define LOG_LEVEL_WARN_STR "WARN "
|
|
Packit Service |
646995 |
#define LOG_LEVEL_ERR_STR "ERR "
|
|
Packit Service |
646995 |
#define LOG_LEVEL_UNKNOWN_STR "? "
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
/*******************************************************************************
|
|
Packit Service |
646995 |
* Logging Macro's
|
|
Packit Service |
646995 |
******************************************************************************/
|
|
Packit Service |
646995 |
#define LOG_PACKET(fmt, args...) { if (LOG_LEVEL_PACKET <= \
|
|
Packit Service |
646995 |
main_log.level) { \
|
|
Packit Service |
646995 |
log_uip(LOG_LEVEL_PACKET_STR, fmt,\
|
|
Packit Service |
646995 |
##args);\
|
|
Packit Service |
646995 |
} }
|
|
Packit Service |
646995 |
#define LOG_DEBUG(fmt, args...) { if (LOG_LEVEL_DEBUG <= main_log.level) { \
|
|
Packit Service |
646995 |
log_uip(LOG_LEVEL_DEBUG_STR, fmt,\
|
|
Packit Service |
646995 |
##args);\
|
|
Packit Service |
646995 |
} }
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
#define LOG_INFO(fmt, args...) { if (LOG_LEVEL_INFO <= main_log.level) { \
|
|
Packit Service |
646995 |
log_uip(LOG_LEVEL_INFO_STR, fmt,\
|
|
Packit Service |
646995 |
##args); \
|
|
Packit Service |
646995 |
} }
|
|
Packit Service |
646995 |
#define LOG_WARN(fmt, args...) { if (LOG_LEVEL_WARN <= main_log.level) { \
|
|
Packit Service |
646995 |
log_uip(LOG_LEVEL_WARN_STR, fmt,\
|
|
Packit Service |
646995 |
##args); \
|
|
Packit Service |
646995 |
} }
|
|
Packit Service |
646995 |
#define LOG_ERR(fmt, args...) { if (LOG_LEVEL_ERR <= main_log.level) { \
|
|
Packit Service |
646995 |
log_uip(LOG_LEVEL_ERR_STR, fmt,\
|
|
Packit Service |
646995 |
##args); \
|
|
Packit Service |
646995 |
} }
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
/*******************************************************************************
|
|
Packit Service |
646995 |
* Logging Statistics
|
|
Packit Service |
646995 |
******************************************************************************/
|
|
Packit Service |
646995 |
struct logger_stats {
|
|
Packit Service |
646995 |
uint64_t debug;
|
|
Packit Service |
646995 |
uint64_t info;
|
|
Packit Service |
646995 |
uint64_t warn;
|
|
Packit Service |
646995 |
uint64_t error;
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
time_t last_log_time;
|
|
Packit Service |
646995 |
};
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
/*******************************************************************************
|
|
Packit Service |
646995 |
* Logger Structure
|
|
Packit Service |
646995 |
******************************************************************************/
|
|
Packit Service |
646995 |
struct logger {
|
|
Packit Service |
646995 |
FILE *fp;
|
|
Packit Service |
646995 |
char *log_file;
|
|
Packit Service |
646995 |
int8_t level;
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
#define LOGGER_ENABLED 0x01
|
|
Packit Service |
646995 |
#define LOGGER_DISABLED 0x02
|
|
Packit Service |
646995 |
int8_t enabled;
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
pthread_mutex_t lock;
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
struct logger_stats stats;
|
|
Packit Service |
646995 |
};
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
extern struct logger main_log;
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
int init_logger(char *);
|
|
Packit Service |
646995 |
void log_uip(char *level_str, char *fmt, ...);
|
|
Packit Service |
646995 |
void fini_logger(int);
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
#define CLOSE_LOGGER 0x01
|
|
Packit Service |
646995 |
#define SHUTDOWN_LOGGER 0x02
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
#endif
|