i2oexec.h revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* *****************************************************************************
*
* All software on this website is made available under the following terms and
* conditions. By downloading this software, you agree to abide by these terms
* and conditions with respect to this software.
*
* I2O SIG All rights reserved.
*
* These header files are provided, pursuant to your I2O SIG membership
* agreement, free of charge on an as-is basis without warranty of any kind,
* either express or implied, including but not limited to, implied warranties
* or merchantability and fitness for a particular purpose. I2O SIG does not
* warrant that this program will meet the user's requirements or that the
* operation of these programs will be uninterrupted or error-free.
* Acceptance and use of this program constitutes the user's understanding
* that he will have no recourse to I2O SIG for any actual or consequential
* damages including, but not limited to, loss profits arising out of use
* or inability to use this program.
*
* Member is permitted to create derivative works to this header-file program.
* However, all copies of the program and its derivative works must contain the
* I2O SIG copyright notice.
*
* *****************************************************************************
*/
/*
* ********************************************************************
* I2OExec.h -- I2O Executive Class Message definition file
*
* This file contains information presented in Chapter 4 of the I2O(tm)
* Specification.
* ********************************************************************
*/
/*
* Copyright (c) 1998 by Sun Microsystems, Inc.
* All rights reserved.
*/
#ifndef _SYS_I2OEXEC_H
#define _SYS_I2OEXEC_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
/*
* ****************************************************************************
* NOTES:
*
* Gets, reads, receives, etc. are all even numbered functions.
* Sets, writes, sends, etc. are all odd numbered functions.
* Functions that both send and receive data can be either but an attempt
* is made to use the function number that indicates the greater transfer
* amount. Functions that do not send or receive data use odd function
* numbers.
*
* Some functions are synonyms like read, receive and send, write.
*
* All common functions will have a code of less than 0x80.
* Unique functions to a class will start at 0x80.
* Executive Functions start at 0xA0.
*
* Utility Message function codes range from 0 - 0x1f
* Base Message function codes range from 0x20 - 0xfe
* Private Message function code is 0xff.
* *****************************************************************************
*/
/* I2O Executive Function Codes. */
#define I2O_EXEC_ADAPTER_ASSIGN 0xB3
#define I2O_EXEC_ADAPTER_READ 0xB2
#define I2O_EXEC_ADAPTER_RELEASE 0xB5
#define I2O_EXEC_BIOS_INFO_SET 0xA5
#define I2O_EXEC_BOOT_DEVICE_SET 0xA7
#define I2O_EXEC_CONFIG_VALIDATE 0xBB
#define I2O_EXEC_CONN_SETUP 0xCA
#define I2O_EXEC_DDM_DESTROY 0xB1
#define I2O_EXEC_DDM_ENABLE 0xD5
#define I2O_EXEC_DDM_QUIESCE 0xC7
#define I2O_EXEC_DDM_RESET 0xD9
#define I2O_EXEC_DDM_SUSPEND 0xAF
#define I2O_EXEC_DEVICE_ASSIGN 0xB7
#define I2O_EXEC_DEVICE_RELEASE 0xB9
#define I2O_EXEC_HRT_GET 0xA8
#define I2O_EXEC_IOP_CLEAR 0xBE
#define I2O_EXEC_IOP_CONNECT 0xC9
#define I2O_EXEC_IOP_RESET 0xBD
#define I2O_EXEC_LCT_NOTIFY 0xA2
#define I2O_EXEC_OUTBOUND_INIT 0xA1
#define I2O_EXEC_PATH_ENABLE 0xD3
#define I2O_EXEC_PATH_QUIESCE 0xC5
#define I2O_EXEC_PATH_RESET 0xD7
#define I2O_EXEC_STATIC_MF_CREATE 0xDD
#define I2O_EXEC_STATIC_MF_RELEASE 0xDF
#define I2O_EXEC_STATUS_GET 0xA0
#define I2O_EXEC_SW_DOWNLOAD 0xA9
#define I2O_EXEC_SW_UPLOAD 0xAB
#define I2O_EXEC_SW_REMOVE 0xAD
#define I2O_EXEC_SYS_ENABLE 0xD1
#define I2O_EXEC_SYS_MODIFY 0xC1
#define I2O_EXEC_SYS_QUIESCE 0xC3
#define I2O_EXEC_SYS_TAB_SET 0xA3
/* I2O Get Status State values */
#define I2O_IOP_STATE_INITIALIZING 0x01
#define I2O_IOP_STATE_RESET 0x02
#define I2O_IOP_STATE_HOLD 0x04
#define I2O_IOP_STATE_READY 0x05
#define I2O_IOP_STATE_OPERATIONAL 0x08
#define I2O_IOP_STATE_FAILED 0x10
#define I2O_IOP_STATE_FAULTED 0x11
/* Event Indicator Assignments for the Executive Class. */
#define I2O_EVENT_IND_RESOURCE_LIMIT 0x00000001
#define I2O_EVENT_IND_CONNECTION_FAIL 0x00000002
#define I2O_EVENT_IND_ADAPTER_FAULT 0x00000004
#define I2O_EVENT_IND_POWER_FAIL 0x00000008
#define I2O_EVENT_IND_RESET_PENDING 0x00000010
#define I2O_EVENT_IND_RESET_IMMINENT 0x00000020
#define I2O_EVENT_IND_HARDWARE_FAIL 0x00000040
#define I2O_EVENT_IND_XCT_CHANGE 0x00000080
#define I2O_EVENT_IND_NEW_LCT_ENTRY 0x00000100
#define I2O_EVENT_IND_MODIFIED_LCT 0x00000200
#define I2O_EVENT_IND_DDM_AVAILABILITY 0x00000400
/* Resource Limit Event Data */
#define I2O_EVENT_RESOURCE_LIMIT_LOW_MEMORY 0x00000001
#define I2O_EVENT_RESOURCE_LIMIT_INBOUND_POOL_LOW 0x00000002
#define I2O_EVENT_RESOURCE_LIMIT_OUTBOUND_POOL_LOW 0x00000004
/* Connection Fail Event Data */
#define I2O_EVENT_CONNECTION_FAIL_REPOND_NORMAL 0x00000000
#define I2O_EVENT_CONNECTION_FAIL_NOT_REPONDING 0x00000001
#define I2O_EVENT_CONNECTION_FAIL_NO_AVAILABLE_FRAMES 0x00000002
/* Reset Pending Event Data */
#define I2O_EVENT_RESET_PENDING_POWER_LOSS 0x00000001
#define I2O_EVENT_RESET_PENDING_CODE_VIOLATION 0x00000002
/* Reset Imminent Event Data */
#define I2O_EVENT_RESET_IMMINENT_UNKNOWN_CAUSE 0x00000000
#define I2O_EVENT_RESET_IMMINENT_POWER_LOSS 0x00000001
#define I2O_EVENT_RESET_IMMINENT_CODE_VIOLATION 0x00000002
#define I2O_EVENT_RESET_IMMINENT_PARITY_ERROR 0x00000003
#define I2O_EVENT_RESET_IMMINENT_CODE_EXCEPTION 0x00000004
#define I2O_EVENT_RESET_IMMINENT_WATCHDOG_TIMEOUT 0x00000005
/* Hardware Fail Event Data */
#define I2O_EVENT_HARDWARE_FAIL_UNKNOWN_CAUSE 0x00000000
#define I2O_EVENT_HARDWARE_FAIL_CPU_FAILURE 0x00000001
#define I2O_EVENT_HARDWARE_FAIL_MEMORY_FAULT 0x00000002
#define I2O_EVENT_HARDWARE_FAIL_DMA_FAILURE 0x00000003
#define I2O_EVENT_HARDWARE_FAIL_IO_BUS_FAILURE 0x00000004
/* DDM Availability Event Data */
#define I2O_EVENT_DDM_AVAILIBILITY_RESPOND_NORMAL 0x00000000
#define I2O_EVENT_DDM_AVAILIBILITY_CONGESTED 0x00000001
#define I2O_EVENT_DDM_AVAILIBILITY_NOT_RESPONDING 0x00000002
#define I2O_EVENT_DDM_AVAILIBILITY_PROTECTION_VIOLATION 0x00000003
#define I2O_EVENT_DDM_AVAILIBILITY_CODE_VIOLATION 0x00000004
#define I2O_OPERATION_FLAG_ASSIGN_PERMANENT 0x01
/* ExecAdapterAssign Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_adapter_assign_message {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in exec adapter assign message */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_adapter_assign_message {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in exec adapter assign message */
#endif
#define I2O_REQUEST_FLAG_CONFIG_REGISTER 0x00000000
#define I2O_REQUEST_FLAG_IO_REGISTER 0x00000001
#define I2O_REQUEST_FLAG_ADAPTER_MEMORY 0x00000002
/* ExecAdapterRead Function Message Frame structure. */
typedef struct i2o_exec_adapter_read_message {
#define I2O_OPERATION_FLAG_RELEASE_PERMANENT 0x01
/* ExecAdapterRelease Function Message Frame structure. */
typedef struct i2o_exec_dapater_release_message {
/* ExecBiosInfoSet Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_bios_info_set_message {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in exec bios info set message structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_bios_info_set_message {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in exec bios info set message structure */
#endif
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
/* ExecBootDeviceSet Function Message Frame structure. */
typedef struct i2o_exec_boot_device_set_message {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in exec boot set message structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_boot_device_set_message {
union {
struct {
} s;
uint32_t w;
} u1;
#endif
/* ExecConfigValidate Function Message Frame structure. */
typedef struct i2o_exec_config_validate_message {
/* ExecConnSetup Requestor */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_alias_connect_setup {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in alias connect setup structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_alias_connect_setup {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in alias connect setup structure */
#endif
#define I2O_OPERATION_FLAG_PEER_TO_PEER_BIDIRECTIONAL 0x01
/* ExecConnSetup Object */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_object_connect_setup {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in object connect setup structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_object_connect_setup {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in object connect setup structure */
#endif
/* ExecConnSetup Function Message Frame structure. */
typedef struct i2o_exec_conn_setup_message {
/* ExecConnSetup Object Reply */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_object_connect_reply {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in object connect reply structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_object_connect_reply {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in object connect reply structure */
#endif
/* ExecConnSetup reply structure. */
typedef struct i2o_exec_conn_setup_reply {
/* ExecDdmDestroy Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_ddm_destroy_message {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in exec ddm destroy message structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_ddm_destroy_message {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in exec ddm destroy message structure */
#endif
/* ExecDdmEnable Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_ddm_enable_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
/* macros to access the bit fields in exec ddm enable message structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_ddm_enable_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
/* macros to access the bit fields in exec ddm enable message structure */
#define get_i2o_exec_ddm_enable_IOP_ID(p, hdl) \
#endif
/* ExecDdmQuiesce Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_ddm_quiesce_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
/* macros to access the bit fields in exec ddm quiesce message structure */
#endif
/* ExecDdmQuiesce Function Message Frame structure. */
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_ddm_quiesce_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
/* macros to access the bit fields in exec ddm quiesce message structure */
#define get_i2o_exec_ddm_quiesce_IOP_ID(p, hdl) \
#endif
/* ExecDdmReset Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_ddm_reset_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
/* macros to access the bit fields in exec ddm reset message structure */
#endif
/* ExecDdmReset Function Message Frame structure. */
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_ddm_reset_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
/* macros to access the bit fields in exec ddm reset message structure */
#define get_i2o_exec_ddm_reset_IOP_ID(p, hdl) \
#endif
/* ExecDdmSuspend Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_ddm_suspend_message {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in exec ddm suspend message structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_ddm_suspend_message {
union {
struct {
} s;
uint32_t w;
} u1;
/* macros to access the bit fields in exec ddm suspend message structure */
#endif
#define I2O_OPERATION_FLAG_ASSIGN_PERMANENT 0x01
/* ExecDeviceAssign Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_device_assign_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
/* macros to access the bit fields in device assign message structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_device_assign_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
/* macros to access the bit fields in device assign message structure */
#define get_i2o_exec_device_assign_IOP_ID(p, hdl) \
#endif
#define I2O_OPERATION_FLAG_RELEASE_PERMANENT 0x01
/* ExecDeviceRelease Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_device_release_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
/* macros to access the bit fields in device release message structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_device_release_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
/* macros to access the bit fields in device assign message structure */
#define get_i2o_exec_device_release_IOP_ID(p, hdl) \
#endif
/* HRT Entry Structure defined in I2OMSG.H */
/* ExecHrtGet Function Message Frame structure. */
typedef struct i2o_exec_hrt_get_message {
/* ExecIopClear Function Message Frame structure. */
typedef struct i2o_exec_iop_clear_message {
/* ExecIopConnect Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_iop_connect_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
union {
struct {
} s4;
} u4;
/* macros to access the bit fields in exec iop connect message structure */
#define get_i2o_exec_iop_connect_IOP1MsgerType(p, hdl) \
#define get_i2o_exec_iop_connect_IOP1AliasForIOP2(p, hdl) \
#define get_i2o_exec_iop_connect_IOP_ID1(p, hdl) \
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_iop_connect_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
union {
struct {
} s4;
} u4;
/* macros to access the bit fields in exec iop connect message structure */
#define get_i2o_exec_iop_connect_IOP1MsgerType(p, hdl) \
#define get_i2o_exec_iop_connect_IOP1AliasForIOP2(p, hdl) \
#define get_i2o_exec_iop_connect_IOP_ID1(p, hdl) \
#endif
/* ExecIopConnect reply structure */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_iop_connect_iop_reply {
union {
struct {
} s3;
} u3;
union {
struct {
} s4;
} u4;
/* macros to access the bit fields in exec iop connect reply structure */
#define get_i2o_exec_iop_connect_reply_IOP2AliasForIOP1(p, hdl) \
#define get_i2o_exec_iop_connect_reply_IOP_ID2(p, hdl) \
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_iop_connect_iop_reply {
union {
struct {
} s3;
} u3;
union {
struct {
} s4;
} u4;
/* macros to access the bit fields in exec iop connect reply structure */
#define get_i2o_exec_iop_connect_reply_IOP2AliasForIOP1(p, hdl) \
#define get_i2o_exec_iop_connect_reply_IOP_ID2(p, hdl) \
#endif
#define I2O_EXEC_IOP_RESET_RESERVED_SZ 16
#define I2O_EXEC_IOP_RESET_IN_PROGRESS 0x01
#define I2O_EXEC_IOP_RESET_REJECTED 0x02
#define I2O_EXEC_IOP_RESET_STATUS_RESERVED_SZ 3
typedef struct i2o_exec_iop_reset_status {
volatile uint8_t ResetStatus;
/* ExecIopReset Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_iop_reset_message {
union {
struct {
} s2;
} u2;
/* macros to access the bit fields in iop reset message */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_iop_reset_message {
union {
struct {
} s2;
} u2;
/* macros to access the bit fields in iop reset message */
#endif
/* LCT Entry Structure defined in I2OMSG.H */
/* ExecLCTNotify Function Message Frame structure. */
typedef struct i2o_exec_lct_notify_message {
/* ExecOutboundInit Function Message Frame structure. */
typedef struct i2o_exec_outbound_init_message {
#define I2O_EXEC_OUTBOUND_INIT_IN_PROGRESS 0x01
#define I2O_EXEC_OUTBOUND_INIT_REJECTED 0x02
#define I2O_EXEC_OUTBOUND_INIT_FAILED 0x03
#define I2O_EXEC_OUTBOUND_INIT_COMPLETE 0x04
#define I2O_EXEC_OUTBOUND_INIT_RESERVED_SZ 3
typedef struct i2o_exec_outbound_init_status {
typedef struct i2o_exec_outbound_init_reclaim_list {
/* ExecPathEnable Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_path_enable_message {
union {
struct {
} s2;
} u2;
/* macros to access the bit fields in exec path enable message structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_path_enable_message {
union {
struct {
} s2;
} u2;
/* macros to access the bit fields in exec path enable message structure */
#define get_i2o_exec_path_enable_IOP_ID(p, hdl) \
#endif
/* ExecPathQuiesce Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_path_quiesce_message {
union {
struct {
} s2;
} u2;
/* macros to access the bit fields in exec path quiesce message structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_path_quiesce_message {
union {
struct {
} s2;
} u2;
/* macros to access the bit fields in exec path quiesce message structure */
#define get_i2o_exec_path_quiesce_IOP_ID(p, hdl) \
#endif
/* ExecPathReset Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_path_reset_message {
union {
struct {
} s2;
} u2;
/* macros to access the bit fields in exec path reset message structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_path_reset_message {
union {
struct {
} s2;
} u2;
/* macros to access the bit fields in exec path reset message structure */
#define get_i2o_exec_path_reset_IOP_ID(p, hdl) \
#endif
#define I2O_EXEC_STATIC_MF_CREATE_RESERVED_SZ 3
/* ExecStaticMfCreate Message Frame structure */
typedef struct i2o_exec_static_mf_create_message {
/* ExecStaticMfCreate Message Frame reply */
typedef struct i2o_exec_static_mf_create_reply {
/* ExecStaticMfRelease Message Frame structure */
typedef struct i2o_exec_static_mf_release_message {
#define I2O_EXEC_STATUS_GET_RESERVED_SZ 16
/* ExecStatusGet Function Message Frame structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_status_get_message {
union {
struct {
} s2;
} u2;
/* macros to access the bit fields in i2o exec status get message */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_status_get_message {
union {
struct {
} s2;
} u2;
/* macros to access the bit fields in i2o exec status get message */
#endif
#define I2O_IOP_STATUS_PROD_ID_STR_SZ 24
#define I2O_EXEC_STATUS_GET_REPLY_RESERVED_SZ 6
/* ExecStatusGet reply Structure */
#define I2O_IOP_CAP_CONTEXT_32_ONLY 0x00000000
#define I2O_IOP_CAP_CONTEXT_64_ONLY 0x00000001
#define I2O_IOP_CAP_CONTEXT_32_64_NOT_CURRENTLY 0x00000002
#define I2O_IOP_CAP_CONTEXT_32_64_CURRENTLY 0x00000003
#define I2O_IOP_CAP_CURRENT_CONTEXT_NOT_CONFIG 0x00000000
#define I2O_IOP_CAP_CURRENT_CONTEXT_32_ONLY 0x00000004
#define I2O_IOP_CAP_CURRENT_CONTEXT_64_ONLY 0x00000008
#define I2O_IOP_CAP_CURRENT_CONTEXT_32_64 0x0000000C
#define I2O_IOP_CAP_INBOUND_PEER_SUPPORT 0x00000010
#define I2O_IOP_CAP_OUTBOUND_PEER_SUPPORT 0x00000020
#define I2O_IOP_CAP_PEER_TO_PEER_SUPPORT 0x00000040
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_status_get_reply {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_status_get_reply {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
#define get_i2o_exec_status_reply_IOP_ID(p, hdl) \
#define get_i2o_exec_status_reply_I2oVersion(p, hdl) \
#define get_i2o_exec_staus_reply_SegmentNumber(p, hdl) \
#endif
#define I2O_EXEC_SW_DOWNLOAD_FLAG_LOAD_MEMORY 0x00
#define I2O_EXEC_SW_DOWNLOAD_FLAG_PERMANENT_STORE 0x01
#define I2O_EXEC_SW_DOWNLOAD_FLAG_EXPERIMENTAL 0x00
#define I2O_EXEC_SW_DOWNLOAD_FLAG_OVERRIDE 0x02
#define I2O_EXEC_SW_TYPE_DDM 0x01
#define I2O_EXEC_SW_TYPE_DDM_MPB 0x02
#define I2O_EXEC_SW_TYPE_DDM_CONFIG_TABLE 0x03
#define I2O_EXEC_SW_TYPE_IRTOS 0x11
#define I2O_EXEC_SW_TYPE_IRTOS_PRIVATE_MODULE 0x12
#define I2O_EXEC_SW_TYPE_IRTOS_DIALOG_TABLE 0x13
#define I2O_EXEC_SW_TYPE_IOP_PRIVATE_MODULE 0x22
#define I2O_EXEC_SW_TYPE_IOP_DIALOG_TABLE 0x23
/* I2O ExecSwDownload/Upload/Remove SwID Structure */
typedef struct i2o_sw_id {
} i2o_sw_id_t;
/* ExecSwDownload Function Message Frame structure. */
typedef struct i2o_exec_sw_donwload_message {
/* ExecSwUpload Function Message Frame structure. */
typedef struct i2o_exec_sw_upload_message {
/* ExecSwRemove Function Message Frame structure. */
typedef struct i2o_exec_sw_remove_message {
/* ExecSysEnable Function Message Frame structure. */
typedef struct i2o_exec_sys_enable_message {
/* ExecSysModify Function Message Frame structure. */
typedef struct i2o_exec_sys_modify_message {
/* ExecSysQuiesce Function Message Frame structure. */
typedef struct i2o_exec_sys_quiesce_message {
/* ExecSysTabSet (System Table) Function Message Frame structure. */
#define I2O_EXEC_SYS_TAB_IOP_ID_LOCAL_IOP 0x000
#define I2O_EXEC_SYS_TAB_IOP_ID_LOCAL_HOST 0x001
#define I2O_EXEC_SYS_TAB_IOP_ID_UNKNOWN_IOP 0xFFF
#define I2O_EXEC_SYS_TAB_HOST_UNIT_ID_LOCAL_UNIT 0x0000
#define I2O_EXEC_SYS_TAB_HOST_UNIT_ID_UNKNOWN_UNIT 0xffff
#define I2O_EXEC_SYS_TAB_SEG_NUMBER_LOCAL_SEGMENT 0x000
#define I2O_EXEC_SYS_TAB_SEG_NUMBER_UNKNOWN_SEGMENT 0xfff
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_exec_sys_tab_set_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
/* macros to access the bit fields in exec ddm enable message structure */
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_exec_sys_tab_set_message {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
/* macros to access the bit fields in exec ddm enable message structure */
#define get_i2o_exec_sys_tab_set_IOP_ID(p, hdl) \
#endif
/* ExecSysTabSet (System Table) Header Reply structure. */
#define I2O_SET_SYSTAB_RESERVED_SZ 8
typedef struct i2o_set_systab_header {
/* I2O_SYSTAB_ENTRY SysTabEntry[1]; */
#define I2O_RESOURCE_MANAGER_VERSION 0
typedef struct i2o_messenger_info {
/* ExecSysTabSet IOP Descriptor Entry structure. */
#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN)
typedef struct i2o_iop_entry {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
#endif
#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN)
typedef struct i2o_iop_entry {
union {
struct {
} s2;
} u2;
union {
struct {
} s3;
} u3;
#endif
/* ************************************************************************** */
/* Executive Parameter Groups */
/* ************************************************************************** */
#define I2O_EXEC_IOP_HARDWARE_GROUP_NO 0x0000
#define I2O_EXEC_IOP_MESSAGE_IF_GROUP_NO 0x0001
#define I2O_EXEC_EXECUTING_ENVIRONMENT_GROUP_NO 0x0002
#define I2O_EXEC_EXECUTING_DDM_LIST_GROUP_NO 0x0003
#define I2O_EXEC_DRIVER_STORE_GROUP_NO 0x0004
#define I2O_EXEC_DRIVER_STORE_TABLE_GROUP_NO 0x0005
#define I2O_EXEC_IOP_BUS_ATTRIBUTES_GROUP_NO 0x0006
#define I2O_EXEC_IOP_SW_ATTRIBUTES_GROUP_NO 0x0007
#define I2O_EXEC_HARDWARE_RESOURCE_TABLE_GROUP_NO 0x0100
#define I2O_EXEC_LCT_SCALAR_GROUP_NO 0x0101
#define I2O_EXEC_LCT_TABLE_GROUP_NO 0x0102
#define I2O_EXEC_SYSTEM_TABLE_GROUP_NO 0x0103
#define I2O_EXEC_EXTERNAL_CONN_TABLE_GROUP_NO 0x0104
/* EXEC Group 0000h - IOP Hardware Parameter Group */
/* IOP HardWare Capabilities defines */
#define I2O_IOP_HW_CAP_SELF_BOOT 0x00000001
#define I2O_IOP_HW_CAP_IRTOS_UPGRADEABLE 0x00000002
#define I2O_IOP_HW_CAP_DOWNLOADABLE_DDM 0x00000004
#define I2O_IOP_HW_CAP_INSTALLABLE_DDM 0x00000008
#define I2O_IOP_HW_CAP_BATTERY_BACKUP_RAM 0x00000010
/* IOP Processor Type defines */
#define I2O_IOP_PROC_TYPE_INTEL_80960 0x00
#define I2O_IOP_PROC_TYPE_AMD_29000 0x01
#define I2O_IOP_PROC_TYPE_MOTOROLA_68000 0x02
#define I2O_IOP_PROC_TYPE_ARM 0x03
#define I2O_IOP_PROC_TYPE_MIPS 0x04
#define I2O_IOP_PROC_TYPE_SPARC 0x05
#define I2O_IOP_PROC_TYPE_POWER_PC 0x06
#define I2O_IOP_PROC_TYPE_ALPHA 0x07
#define I2O_IOP_PROC_TYPE_INTEL_X86 0x08
#define I2O_IOP_PROC_TYPE_OTHER 0xFF
typedef struct i2o_exec_iop_hardware_scalar {
/* EXEC Group 0001h - IOP Message Interface Parameter Group */
/* InitCode defines */
#define I2O_MESSAGE_IF_INIT_CODE_NO_OWNER 0x00
#define I2O_MESSAGE_IF_INIT_CODE_BIOS 0x10
#define I2O_MESSAGE_IF_INIT_CODE_OEM_BIOS_EXTENSION 0x20
#define I2O_MESSAGE_IF_INIT_CODE_ROM_BIOS_EXTENSION 0x30
#define I2O_MESSAGE_IF_INIT_CODE_OS 0x80
typedef struct i2o_exec_iop_message_if_scalar {
/* EXEC Group 0002h - Executing Environment Parameter Group */
typedef struct i2o_exec_execute_environment_scalar {
/* EXEC Group 0003h - Executing DDM's Parameter Group */
/* ModuleType Defines */
#define I2O_EXEC_DDM_MODULE_TYPE_OTHER 0x00
#define I2O_EXEC_DDM_MODULE_TYPE_DOWNLOAD 0x01
#define I2O_EXEC_DDM_MODULE_TYPE_EMBEDDED 0x22
typedef struct i2o_exec_execute_ddm_table {
/* EXEC Group 0004h - Driver Store Environment Parameter Group */
typedef struct i2o_exec_driver_store_scalar {
/* EXEC Group 0005h - Driver Store Parameter Group */
typedef struct i2o_exec_driver_store_table {
/* EXEC Group 0006h - IOP's Bus Attributes Parameter Group */
#define I2O_EXEC_IOP_BUS_ATTRIB_SYSTEM_BUS 0x00
#define I2O_EXEC_IOP_BUS_ATTRIB_BRIDGED_SYSTEM_BUS 0x01
#define I2O_EXEC_IOP_BUS_ATTRIB_PRIVATE 0x02
typedef struct i2o_exec_iop_bus_attribute_table {
/* EXEC Group 0007h - IOP's Bus Attributes Parameter Group */
#define I2O_EXEC_IOP_SW_CAP_IRTOS_I2O_COMPLIANT 0x00000001
#define I2O_EXEC_IOP_SW_CAP_IRTOS_UPGRADEABLE 0x00000002
#define I2O_EXEC_IOP_SW_CAP_DOWNLOADABLE_DDM 0x00000004
#define I2O_EXEC_IOP_SW_CAP_INSTALLABLE_DDM 0x00000008
typedef struct i2o_exec_iop_sw_attributes_scalar {
/* EXEC Group 0100h - Hardware Resource Table Parameter Group */
typedef struct i2o_exec_hardware_resource_table {
/* EXEC Group 0101h - Logical Configuration Table Scalar Parameter Group */
typedef struct i2o_exec_lct_scalar {
/* EXEC Group 0102h - Logical Configuration Table Parameter Group */
typedef struct i2o_exec_lct_table {
/* EXEC Group 0103h - System Table Parameter Group */
#define I2O_MESSENGER_TYPE_MEMORY_MAPPED_MESSAGE_UNIT 0x0
typedef struct i2o_exec_system_table {
/* EXEC Group 0104h - External Connection Table Parameter Group */
#define I2O_EXEC_XCT_FLAGS_REMOTE_IOP_CREATED_CONNECTION 0x00
#define I2O_EXEC_XCT_FLAGS_THIS_IOP_CREATED_CONNECTION 0x01
typedef struct i2o_exec_external_connection_table {
#ifdef __cplusplus
}
#endif
#endif /* _SYS_I2OEXEC_H */