/* * 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 2000 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _MBOXSC_H #define _MBOXSC_H #pragma ident "%Z%%M% %I% %E% SMI" /* * This file defines the Starcat Domain Mailbox Interface, as implemented in * the mboxsc module. */ #ifdef __cplusplus extern "C" { #endif #include /* * Mailbox message types, for use in mboxsc_putmsg() and mboxsc_getmsg() calls. * NOTE: Clients should not use the MBOXSC_NUM_MSG_TYPES value, which * is used internally to simplify future code maintenance. */ #define MBOXSC_MSG_REQUEST 0x01 #define MBOXSC_MSG_REPLY 0x02 #define MBOXSC_MSG_EVENT 0x04 #define MBOXSC_NUM_MSG_TYPES 3 /* * Mailbox directions, for use in mboxsc_init(). */ #define MBOXSC_MBOX_IN 0 #define MBOXSC_MBOX_OUT 1 #ifdef _KERNEL /* * Mailbox control commands, for use in mboxsc_ctrl(). */ #define MBOXSC_CMD_VERSION 1 #define MBOXSC_CMD_MAXVERSION 2 #define MBOXSC_CMD_MAXDATALEN 3 #define MBOXSC_CMD_PUTMSG_TIMEOUT_RANGE 4 #define MBOXSC_CMD_GETMSG_TIMEOUT_RANGE 5 /* * The argument for the TIMEOUT_RANGE control commands is a pointer to one of * these. */ typedef struct mboxsc_timeout_range { clock_t min_timeout; clock_t max_timeout; } mboxsc_timeout_range_t; /* * Mailbox interface functions available to in-kernel clients on Starcat * Domains. * NOTE: The timeout arguments to mboxsc_putmsg() and mboxsc_getmsg() are * interpreted as milliseconds. */ extern int mboxsc_init(uint32_t key, int direction, void (*event_handler)(void)); extern int mboxsc_fini(uint32_t key); extern int mboxsc_putmsg(uint32_t key, uint32_t type, uint32_t cmd, uint64_t *transid, uint32_t length, void *datap, clock_t timeout); extern int mboxsc_getmsg(uint32_t key, uint32_t *type, uint32_t *cmd, uint64_t *transid, uint32_t *length, void *datap, clock_t timeout); extern int mboxsc_ctrl(uint32_t key, uint32_t cmd, void *arg); extern clock_t mboxsc_putmsg_def_timeout(void); #define MBOXSC_PUTMSG_DEF_TIMEOUT mboxsc_putmsg_def_timeout() #ifdef DEBUG /* * The following commands may be passed in to the mboxsc_debug() function to * dump data to the console that wouldn't be available through normal * (non-debug) functions. */ #define MBOXSC_PRNMBOX 1 /* display a particular mailbox */ #define MBOXSC_PRNHASHTBL 2 /* display the whole hash table */ #define MBOXSC_SETDBGMASK 3 /* set the debug mask */ /* * Debugging interface routine. */ extern int mboxsc_debug(int cmd, void *arg); #endif /* DEBUG */ #endif /* _KERNEL */ #ifdef __cplusplus } #endif #endif /* _MBOXSC_H */