diff options
Diffstat (limited to 'arch/arm/mvp/mvpkm/mksck.h')
-rw-r--r-- | arch/arm/mvp/mvpkm/mksck.h | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/arch/arm/mvp/mvpkm/mksck.h b/arch/arm/mvp/mvpkm/mksck.h deleted file mode 100644 index aac00f7..0000000 --- a/arch/arm/mvp/mvpkm/mksck.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Linux 2.6.32 and later Kernel module for VMware MVP Hypervisor Support - * - * Copyright (C) 2010-2012 VMware, Inc. All rights reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 as published by - * the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along with - * this program; see the file COPYING. If not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -#line 5 - -#ifndef _MKSCK_H -#define _MKSCK_H - -/** - * @file - * - * @brief The monitor-kernel socket interface definitions. - * - * The monitor kernel socket interface was created for (what the name - * says) communications between the monitor and host processes. On the - * monitor side a special API is introduced, see mksck_vmm.h. On the - * host side the API is the standard Berkeley socket interface. Host - * process to host process or monitor to monitor communication is not - * supported. - * - * A generic address consists of two 16 bit fields: the vm id and the - * port id. Both hosts (vmx) and monitors (vmm) get their vm id - * automatically. The host vm id is assigned at the time the host - * process opens the mvpkm file descriptor, while the monitor vm id is - * assigned when the vmx.c:SetupWorldSwitchPage() calls - * Mvpkm_SetupIds(). As a vmx may create multiple monitors to service - * an MP guest, a vmx vm id may be associated with multiple monitor vm - * ids. A monitor id, however, has a single associated vmx host id, - * the id of its canonical vmx. - * - * Sockets on the host get their addresses either by explicit user - * call (the bind command) or implicitly by (issuing a send command - * first). At an explicit bind the user may omit one or both fields by - * providing MKSCK_VMID_UNDEF/MKSCK_PORT_UNDEF respectively. An - * implicit bind behaves as if both fields were omitted in an explicit - * bind. The default value of the vmid field is the vmid computed from - * the thread group id while that of a port is a new number. It is not - * invalid to bind a host process socket with a vm id different from - * the vmid computed from the tgid. - * - * Sockets of the monitor are automatically assigned a vmid, that of their - * monitor, at the time of their creation. The port id can be assigned by the - * user or left to the implementation to assign an unused one (by specifying - * MKSCK_PORT_UNDEF at @ref Mksck_Open). - * - * Host unconnected sockets may receive from any monitor sender, may send to any - * monitor socket. A socket can be connected to a peer address, that enables the - * use of the send command. - * - * One of many special predefined port (both host and monitor) is - * MKSCK_PORT_MASTER. It is used for initialization. - * - * Monitor sockets have to send their peer address explicitly (by - * Mksck_SetPeer()) or implicitly by receiving first. After the peer - * is set, monitor sockets may send or receive only to/from their - * peer. - */ - - -#define INCLUDE_ALLOW_MVPD -#define INCLUDE_ALLOW_VMX -#define INCLUDE_ALLOW_MODULE -#define INCLUDE_ALLOW_MONITOR -#define INCLUDE_ALLOW_HOSTUSER -#define INCLUDE_ALLOW_GUESTUSER -#define INCLUDE_ALLOW_GPL -#include "include_check.h" - -#include "vmid.h" - -/* - * The interface limits the size of transferable packets. - */ -#define MKSCK_XFER_MAX 1024 - -#define MKSCK_ADDR_UNDEF (uint32)0xffffffff - -#define MKSCK_PORT_UNDEF (uint16)0xffff -#define MKSCK_PORT_MASTER (MKSCK_PORT_UNDEF-1) -#define MKSCK_PORT_HOST_FB (MKSCK_PORT_UNDEF-2) -#define MKSCK_PORT_BALLOON (MKSCK_PORT_UNDEF-3) -#define MKSCK_PORT_HOST_HID (MKSCK_PORT_UNDEF-4) -#define MKSCK_PORT_CHECKPOINT (MKSCK_PORT_UNDEF-5) -#define MKSCK_PORT_COMM_EV (MKSCK_PORT_UNDEF-6) -#define MKSCK_PORT_HIGH (MKSCK_PORT_UNDEF-7) - -#define MKSCK_VMID_UNDEF VMID_UNDEF -#define MKSCK_VMID_HIGH (MKSCK_VMID_UNDEF-1) - -#define MKSCK_DETACH 3 - -typedef uint16 Mksck_Port; -typedef VmId Mksck_VmId; - -/** - * @brief Page descriptor for typed messages. Each page describes a region of - * the machine address space with base mpn and size 2^(12 + order) bytes. - */ -typedef struct { - uint32 mpn : 20; ///< Base MPN of region described by page - uint32 order : 12; ///< Region is 2^(12 + order) bytes. -} Mksck_PageDesc; - -/** - * @brief Typed message template macro. Allows us to avoid having two message - * types, one with page descriptor vector (for VMM), one without (for - * VMX). - * - * @param type C type of uninterpreted component of the message (following the - * page descriptor vector). - * @param pages number of page descriptors in vector. - */ -#define MKSCK_DESC_TYPE(type,pages) \ - struct { \ - type umsg; \ - Mksck_PageDesc page[pages]; \ - } - -/** - * @brief The monitor kernel socket interface address format - */ -typedef union { - uint32 addr; ///< the address - struct { /* The address is decomposed to two shorts */ - Mksck_Port port; ///< port unique within a vmid - Mksck_VmId vmId; ///< unique vmid - }; -} Mksck_Address; - -static inline uint32 -Mksck_AddrInit(Mksck_VmId vmId, Mksck_Port port) -{ - Mksck_Address aa; - aa.vmId = vmId; - aa.port = port; - return aa.addr; -} -#endif |