emlxs_events.h revision 825277341c15b6b0d2c4b8b622ae7b1d2bdc0390
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2009 Emulex. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _EMLXS_EVENTS_H
#define _EMLXS_EVENTS_H
#ifdef __cplusplus
extern "C" {
#endif
extern void emlxs_null_func();
#ifdef DEF_EVENT_STRUCT
#define DEFINE_EVT(_name, _label, _mask, _timeout, _destroy) \
extern void _destroy(); \
emlxs_event_t _name = {_mask, _label, _timeout, _destroy};
#else
#define DEFINE_EVT(_name, _label, _mask, _timeout, _destroy) \
extern void _destroy(); \
extern emlxs_event_t _name;
#endif /* DEF_EVENT_STRUCT */
/* Event Mask Bits */
#define EVT_LINK 0x00000001 /* FC_REG_LINK_EVENT */
#define EVT_RSCN 0x00000002 /* FC_REG_RSCN_EVENT */
#define EVT_CT 0x00000004 /* FC_REG_CT_EVENT */
#define EVT_MPULSE 0x00000008 /* FC_REG_MULTIPULSE_EVENT */
#define EVT_DUMP 0x00000010 /* FC_REG_DUMP_EVENT */
#define EVT_TEMP 0x00000020 /* FC_REG_TEMP_EVENT */
#define EVT_VPORTRSCN 0x00000040 /* FC_REG_VPORTRSCN_EVENT */
#define EVT_ASYNC 0x00000080 /* FC_REG_ASYNC_EVENT */
#ifdef SAN_DIAG_SUPPORT
#define EVT_SD_ELS 0x00001000 /* FC_REG_SD_ELS_EVENT */
#define EVT_SD_FABRIC 0x00002000 /* FC_REG_SD_FABRIC_EVENT */
#define EVT_SD_SCSI 0x00004000 /* FC_REG_SD_SCSI_EVENT */
#define EVT_SD_BOARD 0x00008000 /* FC_REG_SD_BOARD_EVENT */
#endif /* SAN_DIAG_SUPPORT */
#define EVT_FCOE 0x80000000 /* FC_REG_FCOE_EVENT */
typedef struct emlxs_event
{
uint32_t mask;
char label[64];
uint32_t timeout;
void (*destroy)();
} emlxs_event_t;
#define EMLXS_EVENT_PERIOD 5
#define EVT_TIMEOUT_DEFAULT 60
#define EVT_TIMEOUT_NEVER 0
#define EVT_DESTROY_DEFAULT emlxs_null_func
/* EVENT defines */
DEFINE_EVT(emlxs_link_event, \
"LINK", \
EVT_LINK,
EVT_TIMEOUT_DEFAULT,
EVT_DESTROY_DEFAULT)
DEFINE_EVT(emlxs_rscn_event, \
"RSCN", \
EVT_RSCN,
EVT_TIMEOUT_DEFAULT,
EVT_DESTROY_DEFAULT)
DEFINE_EVT(emlxs_vportrscn_event, \
"VPORT RSCN", \
EVT_VPORTRSCN,
EVT_TIMEOUT_DEFAULT,
EVT_DESTROY_DEFAULT)
DEFINE_EVT(emlxs_ct_event, \
"CT", \
EVT_CT,
EVT_TIMEOUT_DEFAULT,
emlxs_ct_event_destroy)
DEFINE_EVT(emlxs_dump_event, \
"DUMP", \
EVT_DUMP,
EVT_TIMEOUT_DEFAULT,
EVT_DESTROY_DEFAULT)
DEFINE_EVT(emlxs_temp_event, \
"TEMP", \
EVT_TEMP,
EVT_TIMEOUT_DEFAULT,
EVT_DESTROY_DEFAULT)
DEFINE_EVT(emlxs_fcoe_event, \
"FCOE", \
EVT_FCOE,
EVT_TIMEOUT_DEFAULT,
EVT_DESTROY_DEFAULT)
DEFINE_EVT(emlxs_async_event, \
"ASYNC", \
EVT_ASYNC,
EVT_TIMEOUT_DEFAULT,
EVT_DESTROY_DEFAULT)
#ifdef SAN_DIAG_SUPPORT
DEFINE_EVT(emlxs_sd_els_event, \
"SD_ELS", \
EVT_SD_ELS,
EVT_TIMEOUT_DEFAULT,
EVT_DESTROY_DEFAULT)
DEFINE_EVT(emlxs_sd_fabric_event, \
"SD_FC", \
EVT_SD_FABRIC,
EVT_TIMEOUT_DEFAULT,
EVT_DESTROY_DEFAULT)
DEFINE_EVT(emlxs_sd_scsi_event, \
"SD_SCSI", \
EVT_SD_SCSI,
EVT_TIMEOUT_DEFAULT,
EVT_DESTROY_DEFAULT)
DEFINE_EVT(emlxs_sd_board_event, \
"SD_BOARD", \
EVT_SD_BOARD,
EVT_TIMEOUT_DEFAULT,
EVT_DESTROY_DEFAULT)
#endif /* SAN_DIAG_SUPPORT */
#ifdef __cplusplus
}
#endif
#endif /* _EMLXS_EVENTS_H */