diff options
Diffstat (limited to 'arch/arm/mvp/pvtcpkm/comm.h')
-rw-r--r-- | arch/arm/mvp/pvtcpkm/comm.h | 171 |
1 files changed, 0 insertions, 171 deletions
diff --git a/arch/arm/mvp/pvtcpkm/comm.h b/arch/arm/mvp/pvtcpkm/comm.h deleted file mode 100644 index 877731d..0000000 --- a/arch/arm/mvp/pvtcpkm/comm.h +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Linux 2.6.32 and later Kernel module for VMware MVP PVTCP Server - * - * 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 - -/** - * @file - * - * @brief Communication functions based on queue pair transport APIs. - * - * Comm is a shared memory-based mechanism that facilitates the implementation - * of kernel components that require host-to-guest, or guest-to-guest - * communication. - * This facility assumes the availability of a minimal shared memory queue pair - * implementation, such as MVP queue pairs or VMCI queue pairs. The latter must - * provide primitives for queue pair creation and destruction, and reading and - * writing from/to queue pairs. - * Comm assumes that the queue pair (transport) layer is not concerned with - * multi-threading, locking or flow control, and does not require such features. - */ - -#ifndef _COMM_H_ -#define _COMM_H_ - -#define INCLUDE_ALLOW_MODULE -#define INCLUDE_ALLOW_PV -#define INCLUDE_ALLOW_GPL -#include "include_check.h" - -#include "comm_os.h" -#include "comm_transp.h" - - -/* Default/maximum Comm timeouts (in milliseconds). */ -#define COMM_MAX_TO 60000ULL -#define COMM_MAX_TO_UNINT (COMM_MAX_TO + 1) - -#define COMM_OPF_SET_ERR(flags) ((flags) |= 128) -#define COMM_OPF_CLEAR_ERR(flags) ((flags) &= 127) -#define COMM_OPF_TEST_ERR(flags) ((flags) & 128) - -#define COMM_OPF_SET_VAL(flags, val) ((flags) |= ((val) & 127)) -#define COMM_OPF_GET_VAL(flags) ((flags) & 127) - -/** - * Packet (header) structure. - * NB: Do not change this structure, especially the first three fields; there - * will be consequences. It may be extended, but it's not recommended: all - * operations carry this header, so it's better kept in its minimal form. - */ - -typedef struct CommPacket { - unsigned int len; // Total length - unsigned char flags; // Operation flags - unsigned char opCode; // Operation to call - unsigned short data16; // Auxiliary data - unsigned long long data64; - unsigned long long data64ex; - union { - struct { - unsigned int data32; - unsigned int data32ex; - }; - unsigned long long data64ex2; - }; -} CommPacket; - - -/* Opaque structure representing a communication channel. */ - -struct CommChannelPriv; -typedef struct CommChannelPriv *CommChannel; - - -/* Input operations associated with a comm channel. */ - -typedef void (*CommOperationFunc)(CommChannel channel, - void *state, - CommPacket *packet, - struct kvec *vec, - unsigned int vecLen); - - -/* Helper macros */ - -#define COMM_DEFINE_OP(funcName) \ -void \ -funcName(CommChannel channel, \ - void *state, \ - CommPacket *packet, \ - struct kvec *vec, \ - unsigned int vecLen) - - -/* Comm-based implementations. */ - -typedef struct CommImpl { - struct module *owner; - int (*checkArgs)(CommTranspInitArgs *transpArgs); - void *(*stateCtor)(CommChannel channel); - void (*stateDtor)(void *state); - void *(*dataAlloc)(unsigned int dataLen); - void (*dataFree)(void *data); - const CommOperationFunc *operations; - void (*closeNtf)(void *closeNtfData, - const CommTranspInitArgs *transpArgs, - int inBH); - void *closeNtfData; - void (*activateNtf)(void *activateNtfData, - CommChannel channel); - void *activateNtfData; - unsigned long long openAtMillis; - unsigned long long openTimeoutAtMillis; - CommTranspID ntfCenterID; -} CommImpl; - - -int Comm_Init(unsigned int maxChannels); -int Comm_Finish(unsigned long long *timeoutMillis); -int Comm_RegisterImpl(const CommImpl *impl); -void Comm_UnregisterImpl(const CommImpl *impl); -int Comm_IsActive(CommChannel channel); -CommTranspInitArgs Comm_GetTranspInitArgs(CommChannel channel); -void *Comm_GetState(CommChannel channel); -int Comm_Dispatch(CommChannel channel); -unsigned int Comm_DispatchAll(void); -void Comm_Put(CommChannel channel); -void Comm_DispatchUnlock(CommChannel channel); -int Comm_Lock(CommChannel channel); -void Comm_Unlock(CommChannel channel); -int Comm_Zombify(CommChannel channel, int inBH); - -int -Comm_Alloc(const CommTranspInitArgs *transpArgs, - const CommImpl *impl, - int inBH, - CommChannel *newChannel); - - -int -Comm_Write(CommChannel channel, - const CommPacket *packet, - unsigned long long *timeoutMillis); - -int -Comm_WriteVec(CommChannel channel, - const CommPacket *packet, - struct kvec **vec, - unsigned int *vecLen, - unsigned long long *timeoutMillis, - unsigned int *iovOffset); - -unsigned int Comm_RequestInlineEvents(CommChannel channel); -unsigned int Comm_ReleaseInlineEvents(CommChannel channel); - -#endif // _COMM_H_ |