185 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			185 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
 | 
						|
 * All rights reserved
 | 
						|
 * www.brocade.com
 | 
						|
 *
 | 
						|
 * Linux driver for Brocade Fibre Channel Host Bus Adapter.
 | 
						|
 *
 | 
						|
 * This program is free software; you can redistribute it and/or modify it
 | 
						|
 * under the terms of the GNU General Public License (GPL) Version 2 as
 | 
						|
 * published by the Free Software Foundation
 | 
						|
 *
 | 
						|
 * 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.  See the GNU
 | 
						|
 * General Public License for more details.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 *  bfa_log.h BFA log library data structure and function definition
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __BFA_LOG_H__
 | 
						|
#define __BFA_LOG_H__
 | 
						|
 | 
						|
#include <bfa_os_inc.h>
 | 
						|
#include <defs/bfa_defs_status.h>
 | 
						|
#include <defs/bfa_defs_aen.h>
 | 
						|
 | 
						|
/*
 | 
						|
 * BFA log module definition
 | 
						|
 *
 | 
						|
 * To create a new module id:
 | 
						|
 * Add a #define at the end of the list below. Select a value for your
 | 
						|
 * definition so that it is one (1) greater than the previous
 | 
						|
 * definition. Modify the definition of BFA_LOG_MODULE_ID_MAX to become
 | 
						|
 * your new definition.
 | 
						|
 * Should have no gaps in between the values because this is used in arrays.
 | 
						|
 * IMPORTANT: AEN_IDs must be at the begining, otherwise update bfa_defs_aen.h
 | 
						|
 */
 | 
						|
 | 
						|
enum bfa_log_module_id {
 | 
						|
	BFA_LOG_UNUSED_ID	= 0,
 | 
						|
 | 
						|
	/* AEN defs begin */
 | 
						|
	BFA_LOG_AEN_MIN		= BFA_LOG_UNUSED_ID,
 | 
						|
 | 
						|
	BFA_LOG_AEN_ID_ADAPTER 	= BFA_LOG_AEN_MIN + BFA_AEN_CAT_ADAPTER,/* 1 */
 | 
						|
	BFA_LOG_AEN_ID_PORT 	= BFA_LOG_AEN_MIN + BFA_AEN_CAT_PORT,	/* 2 */
 | 
						|
	BFA_LOG_AEN_ID_LPORT 	= BFA_LOG_AEN_MIN + BFA_AEN_CAT_LPORT,	/* 3 */
 | 
						|
	BFA_LOG_AEN_ID_RPORT 	= BFA_LOG_AEN_MIN + BFA_AEN_CAT_RPORT,	/* 4 */
 | 
						|
	BFA_LOG_AEN_ID_ITNIM 	= BFA_LOG_AEN_MIN + BFA_AEN_CAT_ITNIM,	/* 5 */
 | 
						|
	BFA_LOG_AEN_ID_TIN 	= BFA_LOG_AEN_MIN + BFA_AEN_CAT_TIN,	/* 6 */
 | 
						|
	BFA_LOG_AEN_ID_IPFC 	= BFA_LOG_AEN_MIN + BFA_AEN_CAT_IPFC,	/* 7 */
 | 
						|
	BFA_LOG_AEN_ID_AUDIT 	= BFA_LOG_AEN_MIN + BFA_AEN_CAT_AUDIT,	/* 8 */
 | 
						|
	BFA_LOG_AEN_ID_IOC	= BFA_LOG_AEN_MIN + BFA_AEN_CAT_IOC,	/* 9 */
 | 
						|
	BFA_LOG_AEN_ID_ETHPORT	= BFA_LOG_AEN_MIN + BFA_AEN_CAT_ETHPORT,/* 10 */
 | 
						|
 | 
						|
	BFA_LOG_AEN_MAX		= BFA_LOG_AEN_ID_ETHPORT,
 | 
						|
	/* AEN defs end */
 | 
						|
 | 
						|
	BFA_LOG_MODULE_ID_MIN	= BFA_LOG_AEN_MAX,
 | 
						|
 | 
						|
	BFA_LOG_FW_ID		= BFA_LOG_MODULE_ID_MIN + 1,
 | 
						|
	BFA_LOG_HAL_ID		= BFA_LOG_MODULE_ID_MIN + 2,
 | 
						|
	BFA_LOG_FCS_ID		= BFA_LOG_MODULE_ID_MIN + 3,
 | 
						|
	BFA_LOG_WDRV_ID		= BFA_LOG_MODULE_ID_MIN + 4,
 | 
						|
	BFA_LOG_LINUX_ID	= BFA_LOG_MODULE_ID_MIN + 5,
 | 
						|
	BFA_LOG_SOLARIS_ID	= BFA_LOG_MODULE_ID_MIN + 6,
 | 
						|
 | 
						|
	BFA_LOG_MODULE_ID_MAX 	= BFA_LOG_SOLARIS_ID,
 | 
						|
 | 
						|
	/* Not part of any arrays */
 | 
						|
	BFA_LOG_MODULE_ID_ALL 	= BFA_LOG_MODULE_ID_MAX + 1,
 | 
						|
	BFA_LOG_AEN_ALL 	= BFA_LOG_MODULE_ID_MAX + 2,
 | 
						|
	BFA_LOG_DRV_ALL		= BFA_LOG_MODULE_ID_MAX + 3,
 | 
						|
};
 | 
						|
 | 
						|
/*
 | 
						|
 * BFA log catalog name
 | 
						|
 */
 | 
						|
#define BFA_LOG_CAT_NAME	"BFA"
 | 
						|
 | 
						|
/*
 | 
						|
 * bfa log severity values
 | 
						|
 */
 | 
						|
enum bfa_log_severity {
 | 
						|
	BFA_LOG_INVALID = 0,
 | 
						|
	BFA_LOG_CRITICAL = 1,
 | 
						|
	BFA_LOG_ERROR = 2,
 | 
						|
	BFA_LOG_WARNING = 3,
 | 
						|
	BFA_LOG_INFO = 4,
 | 
						|
	BFA_LOG_NONE = 5,
 | 
						|
	BFA_LOG_LEVEL_MAX = BFA_LOG_NONE
 | 
						|
};
 | 
						|
 | 
						|
#define BFA_LOG_MODID_OFFSET		16
 | 
						|
 | 
						|
 | 
						|
struct bfa_log_msgdef_s {
 | 
						|
	u32	msg_id;		/*  message id */
 | 
						|
	int		attributes;	/*  attributes */
 | 
						|
	int		severity;	/*  severity level */
 | 
						|
	char		*msg_value;
 | 
						|
					/*  msg string */
 | 
						|
	char		*message;
 | 
						|
					/*  msg format string */
 | 
						|
	int		arg_type;	/*  argument type */
 | 
						|
	int		arg_num;	/*  number of argument */
 | 
						|
};
 | 
						|
 | 
						|
/*
 | 
						|
 * supported argument type
 | 
						|
 */
 | 
						|
enum bfa_log_arg_type {
 | 
						|
	BFA_LOG_S = 0,		/*  string */
 | 
						|
	BFA_LOG_D,		/*  decimal */
 | 
						|
	BFA_LOG_I,		/*  integer */
 | 
						|
	BFA_LOG_O,		/*  oct number */
 | 
						|
	BFA_LOG_U,		/*  unsigned integer */
 | 
						|
	BFA_LOG_X,		/*  hex number */
 | 
						|
	BFA_LOG_F,		/*  floating */
 | 
						|
	BFA_LOG_C,		/*  character */
 | 
						|
	BFA_LOG_L,		/*  double */
 | 
						|
	BFA_LOG_P		/*  pointer */
 | 
						|
};
 | 
						|
 | 
						|
#define BFA_LOG_ARG_TYPE	2
 | 
						|
#define BFA_LOG_ARG0		(0 * BFA_LOG_ARG_TYPE)
 | 
						|
#define BFA_LOG_ARG1		(1 * BFA_LOG_ARG_TYPE)
 | 
						|
#define BFA_LOG_ARG2		(2 * BFA_LOG_ARG_TYPE)
 | 
						|
#define BFA_LOG_ARG3		(3 * BFA_LOG_ARG_TYPE)
 | 
						|
 | 
						|
#define BFA_LOG_GET_MOD_ID(msgid) ((msgid >> BFA_LOG_MODID_OFFSET) & 0xff)
 | 
						|
#define BFA_LOG_GET_MSG_IDX(msgid) (msgid & 0xffff)
 | 
						|
#define BFA_LOG_GET_MSG_ID(msgdef) ((msgdef)->msg_id)
 | 
						|
#define BFA_LOG_GET_MSG_FMT_STRING(msgdef) ((msgdef)->message)
 | 
						|
#define BFA_LOG_GET_SEVERITY(msgdef) ((msgdef)->severity)
 | 
						|
 | 
						|
/*
 | 
						|
 * Event attributes
 | 
						|
 */
 | 
						|
#define BFA_LOG_ATTR_NONE	0
 | 
						|
#define BFA_LOG_ATTR_AUDIT	1
 | 
						|
#define BFA_LOG_ATTR_LOG	2
 | 
						|
#define BFA_LOG_ATTR_FFDC	4
 | 
						|
 | 
						|
#define BFA_LOG_CREATE_ID(msw, lsw) \
 | 
						|
	(((u32)msw << BFA_LOG_MODID_OFFSET) | lsw)
 | 
						|
 | 
						|
struct bfa_log_mod_s;
 | 
						|
 | 
						|
/**
 | 
						|
 * callback function
 | 
						|
 */
 | 
						|
typedef void (*bfa_log_cb_t)(struct bfa_log_mod_s *log_mod, u32 msg_id,
 | 
						|
			const char *format, ...);
 | 
						|
 | 
						|
 | 
						|
struct bfa_log_mod_s {
 | 
						|
	char		instance_info[16];	/*  instance info */
 | 
						|
	int		log_level[BFA_LOG_MODULE_ID_MAX + 1];
 | 
						|
						/*  log level for modules */
 | 
						|
	bfa_log_cb_t	cbfn; 			/*  callback function */
 | 
						|
};
 | 
						|
 | 
						|
extern int bfa_log_init(struct bfa_log_mod_s *log_mod,
 | 
						|
			char *instance_name, bfa_log_cb_t cbfn);
 | 
						|
extern int bfa_log(struct bfa_log_mod_s *log_mod, u32 msg_id, ...);
 | 
						|
extern bfa_status_t bfa_log_set_level(struct bfa_log_mod_s *log_mod,
 | 
						|
			int mod_id, enum bfa_log_severity log_level);
 | 
						|
extern bfa_status_t bfa_log_set_level_all(struct bfa_log_mod_s *log_mod,
 | 
						|
			enum bfa_log_severity log_level);
 | 
						|
extern bfa_status_t bfa_log_set_level_aen(struct bfa_log_mod_s *log_mod,
 | 
						|
			enum bfa_log_severity log_level);
 | 
						|
extern enum bfa_log_severity bfa_log_get_level(struct bfa_log_mod_s *log_mod,
 | 
						|
			int mod_id);
 | 
						|
extern enum bfa_log_severity bfa_log_get_msg_level(
 | 
						|
			struct bfa_log_mod_s *log_mod, u32 msg_id);
 | 
						|
/*
 | 
						|
 * array of messages generated from xml files
 | 
						|
 */
 | 
						|
extern struct bfa_log_msgdef_s bfa_log_msg_array[];
 | 
						|
 | 
						|
#endif
 |