03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CDDL HEADER START
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * The contents of this file are subject to the terms of the
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Common Development and Distribution License (the "License").
03831d35f7499c87d51205817c93e9a8d42c4baestevel * You may not use this file except in compliance with the License.
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * or http://www.opensolaris.org/os/licensing.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * See the License for the specific language governing permissions
03831d35f7499c87d51205817c93e9a8d42c4baestevel * and limitations under the License.
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * When distributing Covered Code, include this CDDL HEADER in each
03831d35f7499c87d51205817c93e9a8d42c4baestevel * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * If applicable, add the following below this CDDL HEADER, with the
03831d35f7499c87d51205817c93e9a8d42c4baestevel * fields enclosed by brackets "[]" replaced with your own identifying
03831d35f7499c87d51205817c93e9a8d42c4baestevel * information: Portions Copyright [yyyy] [name of copyright owner]
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CDDL HEADER END
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Use is subject to license terms.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifndef _SGFRU_MBOX_H
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define _SGFRU_MBOX_H
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#pragma ident "%Z%%M% %I% %E% SMI"
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifdef __cplusplus
03831d35f7499c87d51205817c93e9a8d42c4baestevelextern "C" {
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#include <sys/sgfru_priv.h>
03831d35f7499c87d51205817c93e9a8d42c4baestevel#include <sys/conf.h>
03831d35f7499c87d51205817c93e9a8d42c4baestevel#include <sys/ddi_impldefs.h>
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Max time sgfru waits for mailbox to respond before
03831d35f7499c87d51205817c93e9a8d42c4baestevel * it decides to timeout. (measured in seconds)
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_DEFAULT_MAX_MBOX_WAIT_TIME 86400
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * FRU Mailbox Definitions
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = CONTAINER_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to unpadded container_hdl_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_CNT_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to unpadded fru_cnt_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_GETNUMSECTIONS 0x7001
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to unpadded fru_info_t containing:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * parent container_hdl_t and max fru_cnt_t (in #sections)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE + (SECTION_SIZE * max fru_cnt_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded container_hdl_t and actual fru_cnt_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded section_t array
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Please return SG_MBOX_STATUS_NO_MEMORY if the buffer is not big enough.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_GETSECTIONS 0x7002
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = SECTION_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to unpadded section_hdl_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_CNT_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to unpadded fru_cnt_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_GETNUMSEGMENTS 0x7003
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * FRU Mailbox definitions
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to unpadded fru_info_t containing:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * parent section_hdl_t and max fru_cnt_t (in #segments)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE + (SEGMENT_SIZE * max fru_cnt_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded parent section_hdl_t and actual fru_cnt_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded segment_t array
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Please return SG_MBOX_STATUS_NO_MEMORY if the buffer is not big enough.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_GETSEGMENTS 0x7004
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = SECTION_HDL_SIZE + SEGMENT_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded parent section_hdl_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded segment_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = SEGMENT_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * segment_hdl_t of newly created segment
03831d35f7499c87d51205817c93e9a8d42c4baestevel * updated parent section_hdl_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Please return SG_MBOX_STATUS_STALE_OBJECT if the section_hdl_t is stale.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Please return SG_MBOX_STATUS_NO_SEPROM_SPACE if the seprom is out of space
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_ADDSEGMENT 0x7005
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = SEGMENT_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to segment_hdl_t of segment to be deleted
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = SECTION_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to updated section_hdl_t of deleted segment
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_DELETESEGMENT 0x7006
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded fru_info_t: segment_hdl_t and max count in bytes
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded fru_info_t: segment_hdl_t and actual count in bytes
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded data of actual fru_cnt_t bytes
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Please return SG_MBOX_STATUS_NO_MEMORY if the buffer is not big enough.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_READRAWSEGMENT 0x7007
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE + fru_cnt_t bytes
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded fru_info_t: segment_hdl_t and count in bytes
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded data of fru_cnt_t bytes
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded fru_info_t: segment_hdl_t and count in bytes
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Please return SG_MBOX_STATUS_ILLEGAL_PARAMETER if it's
03831d35f7499c87d51205817c93e9a8d42c4baestevel * not an opaque segment.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_WRITERAWSEGMENT 0x7008
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = SEGMENT_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to unpadded segment_hdl_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_CNT_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to unpadded fru_cnt_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_GETNUMPACKETS 0x7009
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to unpadded fru_info_t, containing:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded segment_hdl_t plus max fru_cnt_t in bytes
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE + (PACKET_SIZE * max fru_cnt_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded parent segment_hdl_t and actual fru_cnt_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded packet_t array
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Please return SG_MBOX_STATUS_NO_MEMORY if the buffer is not big enough.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_GETPACKETS 0x700a
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE + PACKET_SIZE + fru_cnt_t size
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded fru_info_t with parent segment_hdl_t and fru_cnt_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded packet_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded data of size fru_cnt_t (in bytes)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = SEGMENT_HDL_SIZE + PACKET_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * packet_hdl_t of newly created packet
03831d35f7499c87d51205817c93e9a8d42c4baestevel * updated parent segment_hdl_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Please return SG_MBOX_STATUS_NO_SEPROM_SPACE if the seprom is out of space
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_APPENDPACKET 0x700b
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = PACKET_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to packet_hdl_t of packet to be deleted
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = SEGMENT_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to updated segment_hdl_t of deleted packet
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_DELETEPACKET 0x700c
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded fru_info_t with packet_hdl_t and max fru_cnt_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE + max fru_cnt_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded fru_info_t with packet_hdl_t and actual fru_cnt_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded data of size fru_cnt_t (in bytes)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Please return SG_MBOX_STATUS_NO_MEMORY if the buffer is not big enough.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_GETPAYLOAD 0x700d
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE + fru_cnt_t size
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded fru_info_t with packet_hdl_t and actual count
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded payload data buf of fru_cnt_t size (in bytes)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded fru_hdl_t with updated handle
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded data of size fru_cnt_t (in bytes)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Please return SG_MBOX_STATUS_NO_SEPROM_SPACE if the seprom is out of space
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_UPDATEPAYLOAD 0x700e
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * FRU Mailbox Definitions
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to unpadded fru_info_t containing:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * parent fru_hdl_t and max fru_cnt_t (in node_t's)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = NODE_SIZE * max fru_cnt_t (in node_t's)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded fru_hdl_t and actual fru_cnt_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded node_t array
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_GETCHILDLIST 0x700f
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * FRU Mailbox Definitions
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to unpadded fru_info_t containing:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * parent fru_hdl_t and max fru_cnt_t (in fru_hdl_t's)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_HDL_SIZE * max fru_cnt_t (in fru_hdl_t's)
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded fru_hdl_t and actual fru_cnt_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded fru_hdl_t array
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_GETCHILDHANDLES 0x7010
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Request (from Solaris to SC):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = FRU_INFO_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = pointer to unpadded fru_hdl_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Response (from SC to Solaris):
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_len = NODE_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_buf = caddr_t of msg_len, contains:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * unpadded node_t
03831d35f7499c87d51205817c93e9a8d42c4baestevel * msg_status = return value, see below.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Error Notes:
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SGFRU_MBOX_GETNODEINFO 0x7020
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * The defines below are used for translating padded (C) to non-padded (Java),
03831d35f7499c87d51205817c93e9a8d42c4baestevel * and must directly correspond to the structures defined in fru_data_access.h
03831d35f7499c87d51205817c93e9a8d42c4baestevel * and sgfru.h.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define FRU_HDL_SIZE sizeof (fru_hdl_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define CONTAINER_HDL_SIZE FRU_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SECTION_HDL_SIZE FRU_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SEGMENT_HDL_SIZE FRU_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PACKET_HDL_SIZE FRU_HDL_SIZE
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define FRU_CNT_SIZE sizeof (fru_cnt_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define NAME_SIZE sizeof (char[SEG_NAME_LEN])
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define OFFSET_SIZE sizeof (uint32_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define LENGTH_SIZE sizeof (uint32_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PROTECTED_SIZE sizeof (uint32_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define VERSION_SIZE sizeof (uint32_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define DESCRIPTOR_SIZE sizeof (uint32_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define TAG_SIZE sizeof (tag_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define NODENAME_SIZE sizeof (char[MAX_NODE_NAME])
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define HASCHILDREN_SIZE sizeof (uint16_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define CLASS_SIZE sizeof (uint16_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define CLASS_INFO_SIZE sizeof (union class_info)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SLOT_SIZE sizeof (uint16_t)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define LABEL_SIZE sizeof (char[MAX_NODE_NAME])
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define FRU_INFO_SIZE (FRU_HDL_SIZE + FRU_CNT_SIZE)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SECTION_SIZE (SECTION_HDL_SIZE + OFFSET_SIZE +\
03831d35f7499c87d51205817c93e9a8d42c4baestevel LENGTH_SIZE + PROTECTED_SIZE + VERSION_SIZE)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SEGMENT_SIZE (SEGMENT_HDL_SIZE + NAME_SIZE +\
03831d35f7499c87d51205817c93e9a8d42c4baestevel DESCRIPTOR_SIZE + OFFSET_SIZE + LENGTH_SIZE)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PACKET_SIZE (PACKET_HDL_SIZE + TAG_SIZE)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define NODE_SIZE (FRU_HDL_SIZE + NODENAME_SIZE +\
03831d35f7499c87d51205817c93e9a8d42c4baestevel HASCHILDREN_SIZE + CLASS_SIZE +\
03831d35f7499c87d51205817c93e9a8d42c4baestevel CLASS_INFO_SIZE)
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic int sgfru_mbox(const int cmd, char *datap, const size_t size,
03831d35f7499c87d51205817c93e9a8d42c4baestevel fru_info_t *fru);
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic caddr_t sgfru_fru_pad(const caddr_t datap, fru_info_t *fru);
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic int sgfru_node_pad(const caddr_t datap, const int max_cnt,
03831d35f7499c87d51205817c93e9a8d42c4baestevel fru_info_t *fru, node_t *nodep);
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic int sgfru_section_pad(const caddr_t datap, const int max_cnt,
03831d35f7499c87d51205817c93e9a8d42c4baestevel fru_info_t *fru, section_t *sectp);
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic int sgfru_segment_pad(const caddr_t datap, const int max_cnt,
03831d35f7499c87d51205817c93e9a8d42c4baestevel fru_info_t *fru, segment_t *segp);
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic int sgfru_packet_pad(const caddr_t datap, const int max_cnt,
03831d35f7499c87d51205817c93e9a8d42c4baestevel fru_info_t *fru, packet_t *packp);
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic caddr_t sgfru_fru_unpad(const fru_info_t *fru, caddr_t datap);
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic void sgfru_segment_unpad(const fru_info_t *fru, const segment_t *segp,
03831d35f7499c87d51205817c93e9a8d42c4baestevel caddr_t datap);
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic caddr_t sgfru_packet_unpad(const fru_info_t *fru, const packet_t *packp,
03831d35f7499c87d51205817c93e9a8d42c4baestevel caddr_t datap);
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifdef __cplusplus
03831d35f7499c87d51205817c93e9a8d42c4baestevel}
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif /* _SGFRU_MBOX_H */