solaris.h revision 43c04700c331df89380608490a9c65582845dea8
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/* $Id$ */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/** @file
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * VBoxGuest - Guest Additions Driver for Solaris - testcase stubs.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * Copyright (C) 2012 Oracle Corporation
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk *
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * This file is part of VirtualBox Open Source Edition (OSE), as
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * available from http://www.virtualbox.org. This file is free software;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * you can redistribute it and/or modify it under the terms of the GNU
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * General Public License (GPL) as published by the Free Software
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * Foundation, in version 2 as it comes in the "COPYING" file of the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk *
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * The contents of this file may alternatively be used under the terms
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenk * of the Common Development and Distribution License Version 1.0
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * VirtualBox OSE distribution, in which case the provisions of the
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenk * CDDL are applicable instead of those of the GPL.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk *
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * You may elect to license modified versions of this file under the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * terms and conditions of either the GPL or the CDDL or both.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#ifndef ___VBoxGuestTestCaseSolaris_h
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ___VBoxGuestTestCaseSolaris_h
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#include <iprt/assert.h>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#include <iprt/string.h> /* RT_ZERO */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#ifdef RT_OS_WINDOWS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# include <WinSock2.h> /* struct timeval */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#endif
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#include <errno.h>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#include <time.h> /* struct timeval */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/* Overrides */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define dev_t unsigned
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/* Constants */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_FAILURE (-1)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_SUCCESS (0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define MODMAXNAMELEN 32
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define MODMAXLINKINFOLEN 32
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define MODMAXLINK 10
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define MOD_NOAUTOUNLOAD 0x1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_DATA 0x00
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_BREAK 0x08
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_PASSFP 0x09
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_EVENT 0x0a
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_SIG 0x0b
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_DELAY 0x0c
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_CTL 0x0d
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_IOCTL 0x0e
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_SETOPTS 0x10
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_RSE 0x11
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_IOCACK 0x81
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_IOCNAK 0x82
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_PCPROTO 0x83
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_PCSIG 0x84
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_READ 0x85
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_FLUSH 0x86
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_STOP 0x87
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_START 0x88
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_HANGUP 0x89
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_ERROR 0x8a
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_COPYIN 0x8b
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_COPYOUT 0x8c
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_IOCDATA 0x8d
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_PCRSE 0x8e
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_STOPI 0x8f
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_STARTI 0x90
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_PCEVENT 0x91
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_UNHANGUP 0x92
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define M_CMD 0x93
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define BPRI_LO 1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define BPRI_MED 2
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define BPRI_HI 3
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define FLUSHALL 1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define FLUSHDATA 0
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define TRANSPARENT (unsigned int)(-1)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define FLUSHR 0x01
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define FLUSHW 0x02
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define MSIOC ('m'<<8)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define MSIOGETPARMS (MSIOC|1)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define MSIOSETPARMS (MSIOC|2)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define MSIOBUTTONS (MSIOC|3)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define MSIOSRESOLUTION (MSIOC|4)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VUIOC ('v'<<8)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VUIDSFORMAT (VUIOC|1)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VUIDGFORMAT (VUIOC|2)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VUID_NATIVE 0
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VUID_FIRM_EVENT 1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VUIDSADDR (VUIOC|3)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VUIDGADDR (VUIOC|4)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VUID_WHEEL_MAX_COUNT 256
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VUIDGWHEELCOUNT (VUIOC|15)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VUIDGWHEELINFO (VUIOC|16)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VUIDGWHEELSTATE (VUIOC|17)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VUIDSWHEELSTATE (VUIOC|18)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_DEVICE_ATTR_V0 0x0001
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_DEVICE_ATTR_V1 0x0002
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_NEVERSWAP_ACC 0x00
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_STRUCTURE_LE_ACC 0x01
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_STRUCTURE_BE_ACC 0x02
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_STRICTORDER_ACC 0x00
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_UNORDERED_OK_ACC 0x01
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_MERGING_OK_ACC 0x02
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_LOADCACHING_OK_ACC 0x03
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_STORECACHING_OK_ACC 0x04
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/** @todo fix this */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_DEFAULT_ACC DDI_STRICTORDER_ACC
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_INTR_CLAIMED 1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_INTR_UNCLAIMED 0
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_INTR_TYPE_FIXED 0x1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_INTR_TYPE_MSI 0x2
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define DDI_INTR_TYPE_MSIX 0x4
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define LOC_FIRST_DELTA 32640
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define LOC_X_DELTA 32640
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define LOC_Y_DELTA 32641
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define LOC_LAST_DELTA 32641
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define LOC_FIRST_ABSOLUTE 32642
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define LOC_X_ABSOLUTE 32642
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define LOC_Y_ABSOLUTE 32643
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define LOC_LAST_ABSOLUTE 32643
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define FE_PAIR_NONE 0
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define FE_PAIR_SET 1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define FE_PAIR_DELTA 2
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define FE_PAIR_ABSOLUTE 3
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct __ldi_handle *ldi_handle_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef enum
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk DDI_INFO_DEVT2DEVINFO = 0,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk DDI_INFO_DEVT2INSTANCE = 1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk} ddi_info_cmd_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef enum
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk DDI_ATTACH = 0,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk DDI_RESUME = 1,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk DDI_PM_RESUME = 2
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk} ddi_attach_cmd_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef enum
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk DDI_DETACH = 0,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk DDI_SUSPEND = 1,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk DDI_PM_SUSPEND = 2,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk DDI_HOTPLUG_DETACH = 3
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk} ddi_detach_cmd_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/* Simple types */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct cred *cred_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct dev_info *dev_info_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct __ddi_acc_handle * ddi_acc_handle_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct __ddi_intr_handle *ddi_intr_handle_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct mutex *kmutex_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef unsigned int uint_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef unsigned short ushort_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef unsigned char uchar_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/* Structures */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstruct modspecific_info {
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk char msi_linkinfo[MODMAXLINKINFOLEN];
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int msi_p0;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk};
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstruct modinfo {
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int mi_info;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int mi_state;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int mi_id;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int mi_nextid;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk char *mi_base; /* Was caddr_t. */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk size_t mi_size;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int mi_rev;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int mi_loadcnt;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk char mi_name[MODMAXNAMELEN];
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk struct modspecific_info mi_msinfo[MODMAXLINK];
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk};
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct queue
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk struct qinit *q_qinfo;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk struct msgb *q_first;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk struct msgb *q_last;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk struct queue *q_next;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk void *q_ptr;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk size_t q_count;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk uint_t q_flag;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ssize_t q_minpsz;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ssize_t q_maxpsz;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk size_t q_hiwat;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk size_t q_lowat;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk} queue_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct msgb
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk struct msgb *b_next;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk struct msgb *b_prev;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk struct msgb *b_cont;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk unsigned char *b_rptr;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk unsigned char *b_wptr;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk struct datab *b_datap;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk unsigned char b_band;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk unsigned short b_flag;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk} mblk_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenktypedef struct datab
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk unsigned char *db_base;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk unsigned char *db_lim;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk unsigned char db_ref;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk unsigned char db_type;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk} dblk_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstruct iocblk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int ioc_cmd;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk cred_t *ioc_cr;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk uint_t ioc_id;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk uint_t ioc_flag;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk size_t ioc_count;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int ioc_rval;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int ioc_error;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#if defined(RT_ARCH_AMD64) /* Actually this should be LP64. */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int dummy; /* For simplicity, to ensure the structure size matches
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk struct copyreq. */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#endif
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk};
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstruct copyreq
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int cq_cmd;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk cred_t *cq_cr;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk uint_t cq_id;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk uint_t cq_flag;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk mblk_t *cq_private;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk char *cq_addr; /* Was caddr_t. */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk size_t cq_size;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk};
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstruct copyresp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int cp_cmd;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk cred_t *cp_cr;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk uint_t cp_id;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk uint_t cp_flag;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk mblk_t *cp_private;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk char *cp_rval; /* Was caddr_t. */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk};
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct modctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk /* ... */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk char mod_loadflags;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk /* ... */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk} modctl_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct {
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int jitter_thresh;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int speed_law;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int speed_limit;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk} Ms_parms;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct {
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int height;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int width;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk} Ms_screen_resolution;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct vuid_addr_probe {
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk short base;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk union
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk {
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk short next;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk short current;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk } data;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk} Vuid_addr_probe;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct ddi_device_acc_attr
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ushort_t devacc_attr_version;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk uchar_t devacc_attr_endian_flags;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk uchar_t devacc_attr_dataorder;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk uchar_t devacc_attr_access;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk} ddi_device_acc_attr_t;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktypedef struct firm_event
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ushort_t id;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk uchar_t pair_type;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk uchar_t pair;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk int value;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk struct timeval time;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk} Firm_event;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/* Prototypes */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define _init vboxguestSolarisInit
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkextern int vboxguestSolarisInit(void);
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define _fini vboxguestSolarisFini
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenkextern int vboxguestSolarisFini(void);
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define _info vboxguestSolarisInfo
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkextern int vboxguestSolarisInfo(struct modinfo *pModInfo);
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenk/* Simple API stubs */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define cmn_err(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define mod_remove(...) 0
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define mod_info(...) 0
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define RTR0Init(...) VINF_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define RTR0Term(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define RTLogCreate(...) VINF_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define RTLogRelSetDefaultInstance(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define RTLogDestroy(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VBoxGuestCreateKernelSession(...) VINF_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VBoxGuestCreateUserSession(...) VINF_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VBoxGuestCloseSession(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VBoxGuestInitDevExt(...) VINF_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VBoxGuestDeleteDevExt(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VBoxGuestCommonIOCtl(...) VINF_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VBoxGuestCommonISR(...) true
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VbglGRAlloc(...) VINF_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VbglGRPerform(...) VINF_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define VbglGRFree(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define qprocson(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define qprocsoff(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define flushq(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define putnext(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_get_instance(...) 0
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define pci_config_setup(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define pci_config_teardown(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_regs_map_setup(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_regs_map_free(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_dev_regsize(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_create_minor_node(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_remove_minor_node(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_intr_get_supported_types(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_intr_get_nintrs(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_intr_get_navail(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_intr_alloc(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_intr_free(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_intr_get_pri(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_intr_enable(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_intr_disable(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_intr_add_handler(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define ddi_intr_remove_handler(...) DDI_SUCCESS
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define mutex_init(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define mutex_destroy(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define mutex_enter(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define mutex_exit(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define uniqtime32(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define canput(...) true
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define putbq(...) do {} while(0)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/* Externally defined helpers. */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/** Flags set in the struct mblk b_flag member for verification purposes.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk * @{ */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/** miocpullup was called for this message. */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define F_TEST_PULLUP 1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/** @} */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkextern void miocack(queue_t *pWriteQueue, mblk_t *pMBlk, int cbData, int rc);
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkextern void miocnak(queue_t *pWriteQueue, mblk_t *pMBlk, int cbData, int iErr);
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkextern int miocpullup(mblk_t *pMBlk, size_t cbMsg);
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkextern void mcopyin(mblk_t *pMBlk, void *pvState, size_t cbData, void *pvUser);
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkextern void mcopyout(mblk_t *pMBlk, void *pvState, size_t cbData, void *pvUser,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk mblk_t *pMBlkData);
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkextern void qreply(queue_t *pQueue, mblk_t *pMBlk);
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkextern mblk_t *allocb(size_t cb, uint_t cPrio);
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkextern void freemsg(mblk_t *pMsg);
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/* API stubs with simple logic */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstatic modctl_t s_ModCtl;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstatic void **s_pvLinkage;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstatic inline modctl_t *mod_getctl(void **linkage)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk s_pvLinkage = linkage;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk return s_pvLinkage ? &s_ModCtl : NULL;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk}
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define mod_install(linkage) (s_pvLinkage && ((linkage) == s_pvLinkage) ? 0 : EINVAL)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define QREADR 0x00000010
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define OTHERQ(q) ((q)->q_flag & QREADR ? (q) + 1 : (q) - 1)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define WR(q) ((q)->q_flag & QREADR ? (q) + 1 : (q))
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#define RD(q) ((q)->q_flag & QREADR ? (q) : (q) - 1)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/* Basic initialisation of a queue structure pair for testing. */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstatic inline void doInitQueues(queue_t aQueues[2])
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk aQueues[0].q_flag = QREADR;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk}
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstatic inline dev_t makedevice(unsigned cMajor, unsigned cMinor)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk return cMajor * 4096 + cMinor;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk}
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstatic inline unsigned getmajor(dev_t device)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk return device / 4096;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk}
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/* API stubs with controllable logic */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#endif /* ___VBoxGuestTestCaseSolaris_h */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk