holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ddk/ws2san.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ddk/ws2san.h	Thu Sep 16 09:43:14 2010 +0100
@@ -0,0 +1,248 @@
+/*
+ * ws2san.h
+ *
+ * WinSock Direct (SAN) support
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __WS2SAN_H
+#define __WS2SAN_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winsock2.h>
+#include "ntddk.h"
+
+
+#define WSPAPI STDCALL
+
+/* FIXME: Unknown definitions */
+typedef PVOID LPWSPDATA;
+typedef PDWORD LPWSATHREADID;
+typedef PVOID LPWSPPROC_TABLE;
+typedef struct _WSPUPCALLTABLEEX WSPUPCALLTABLEEX;
+typedef WSPUPCALLTABLEEX *LPWSPUPCALLTABLEEX;
+
+#define SO_MAX_RDMA_SIZE                  0x700D
+#define SO_RDMA_THRESHOLD_SIZE            0x700E
+
+#define WSAID_REGISTERMEMORY \
+  {0xC0B422F5, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+
+#define WSAID_DEREGISTERMEMORY \
+  {0xC0B422F6, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+
+#define WSAID_REGISTERRDMAMEMORY \
+  {0xC0B422F7, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+
+#define WSAID_DEREGISTERRDMAMEMORY \
+  {0xC0B422F8, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+
+#define WSAID_RDMAWRITE \
+  {0xC0B422F9, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+
+#define WSAID_RDMAREAD \
+  {0xC0B422FA, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+
+#define WSAID_MEMORYREGISTRATIONCACHECALLBACK \
+  {0xE5DA4AF8, 0xD824, 0x48CD, {0xA7, 0x99, 0x63, 0x37, 0xA9, 0x8E, 0xD2, 0xAF}}
+
+typedef struct _WSABUFEX {
+  u_long  len; 
+  char FAR  *buf; 
+  HANDLE  handle; 
+} WSABUFEX, FAR * LPWSABUFEX;
+
+#if 0
+typedef struct _WSPUPCALLTABLEEX {
+  LPWPUCLOSEEVENT  lpWPUCloseEvent;
+  LPWPUCLOSESOCKETHANDLE  lpWPUCloseSocketHandle;
+  LPWPUCREATEEVENT  lpWPUCreateEvent;
+  LPWPUCREATESOCKETHANDLE  lpWPUCreateSocketHandle;
+  LPWPUFDISSET  lpWPUFDIsSet;
+  LPWPUGETPROVIDERPATH  lpWPUGetProviderPath;
+  LPWPUMODIFYIFSHANDLE  lpWPUModifyIFSHandle;
+  LPWPUPOSTMESSAGE  lpWPUPostMessage;
+  LPWPUQUERYBLOCKINGCALLBACK  lpWPUQueryBlockingCallback;
+  LPWPUQUERYSOCKETHANDLECONTEXT  lpWPUQuerySocketHandleContext;
+  LPWPUQUEUEAPC  lpWPUQueueApc;
+  LPWPURESETEVENT  lpWPUResetEvent;
+  LPWPUSETEVENT  lpWPUSetEvent;
+  LPWPUOPENCURRENTTHREAD  lpWPUOpenCurrentThread;
+  LPWPUCLOSETHREAD  lpWPUCloseThread;
+  LPWPUCOMPLETEOVERLAPPEDREQUEST lpWPUCompleteOverlappedRequest;
+} WSPUPCALLTABLEEX, FAR * LPWSPUPCALLTABLEEX;
+#endif
+
+int WSPAPI
+WSPStartupEx(
+  /*IN*/ WORD  wVersionRequested,
+  /*OUT*/ LPWSPDATA  lpWSPData,
+  /*IN*/ LPWSAPROTOCOL_INFOW  lpProtocolInfo,
+  /*IN*/ LPWSPUPCALLTABLEEX  lpUpcallTable,
+  /*OUT*/ LPWSPPROC_TABLE  lpProcTable);
+
+typedef int WSPAPI
+(*LPWSPSTARTUPEX)(
+  /*IN*/ WORD  wVersionRequested,
+  /*OUT*/ LPWSPDATA  lpWSPData,
+  /*IN*/ LPWSAPROTOCOL_INFOW  lpProtocolInfo,
+  /*IN*/ LPWSPUPCALLTABLEEX  lpUpcallTable,
+  /*OUT*/ LPWSPPROC_TABLE  lpProcTable);
+
+#define MEM_READ                          1
+#define MEM_WRITE                         2
+#define MEM_READWRITE                     3
+
+int WSPAPI
+WSPDeregisterMemory(
+  /*IN*/ SOCKET  s,
+  /*IN*/ HANDLE  Handle,
+  /*OUT*/ LPINT  lpErrno);
+
+typedef int WSPAPI
+(*LPFN_WSPDEREGISTERMEMORY)(
+  /*IN*/ SOCKET  s,
+  /*IN*/ HANDLE  Handle,
+  /*OUT*/ LPINT  lpErrno);
+
+int WSPAPI
+WSPDeregisterRdmaMemory(
+  /*IN*/ SOCKET  s,
+  /*IN*/ LPVOID  lpRdmaBufferDescriptor,
+  /*IN*/ DWORD  dwDescriptorLength,
+  /*OUT*/ LPINT  lpErrno);
+
+typedef int WSPAPI
+(*LPFN_WSPDEREGISTERRDMAMEMORY)(
+  /*IN*/ SOCKET  s,
+  /*IN*/ LPVOID  lpRdmaBufferDescriptor,
+  /*IN*/ DWORD  dwDescriptorLength,
+  /*OUT*/ LPINT  lpErrno);
+
+int WSPAPI
+WSPMemoryRegistrationCacheCallback(
+  /*IN*/ PVOID  lpvAddress,
+  /*IN*/ SIZE_T  Size,
+  /*OUT*/ LPINT  lpErrno);
+
+typedef int WSPAPI
+(*LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK)(
+  /*IN*/ PVOID  lpvAddress,
+  /*IN*/ SIZE_T  Size,
+  /*OUT*/ LPINT  lpErrno);
+
+int WSPAPI
+WSPRdmaRead(
+  /*IN*/ SOCKET  s,
+  /*IN*/ LPWSABUFEX  lpBuffers,
+  /*IN*/ DWORD  dwBufferCount,
+  /*IN*/ LPVOID  lpTargetBufferDescriptor,
+  /*IN*/ DWORD  dwTargetDescriptorLength,
+  /*IN*/ DWORD  dwTargetBufferOffset,
+  /*OUT*/ LPDWORD  lpdwNumberOfBytesRead,
+  /*IN*/ DWORD  dwFlags,
+  /*IN*/ LPWSAOVERLAPPED  lpOverlapped,
+  /*IN*/ LPWSAOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine,
+  /*IN*/ LPWSATHREADID  lpThreadId,
+  /*OUT*/ LPINT  lpErrno);
+
+typedef int WSPAPI
+(*LPFN_WSPRDMAREAD)(
+  /*IN*/ SOCKET  s,
+  /*IN*/ LPWSABUFEX  lpBuffers,
+  /*IN*/ DWORD  dwBufferCount,
+  /*IN*/ LPVOID  lpTargetBufferDescriptor,
+  /*IN*/ DWORD  dwTargetDescriptorLength,
+  /*IN*/ DWORD  dwTargetBufferOffset,
+  /*OUT*/ LPDWORD  lpdwNumberOfBytesRead,
+  /*IN*/ DWORD  dwFlags,
+  /*IN*/ LPWSAOVERLAPPED  lpOverlapped,
+  /*IN*/ LPWSAOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine,
+  /*IN*/ LPWSATHREADID  lpThreadId,
+  /*OUT*/ LPINT  lpErrno);
+
+int WSPAPI
+WSPRdmaWrite(
+  /*IN*/ SOCKET  s,
+  /*IN*/ LPWSABUFEX  lpBuffers,
+  /*IN*/ DWORD  dwBufferCount,
+  /*IN*/ LPVOID  lpTargetBufferDescriptor,
+  /*IN*/ DWORD  dwTargetDescriptorLength,
+  /*IN*/ DWORD  dwTargetBufferOffset,
+  /*OUT*/ LPDWORD  lpdwNumberOfBytesWritten,
+  /*IN*/ DWORD  dwFlags,
+  /*IN*/ LPWSAOVERLAPPED  lpOverlapped,
+  /*IN*/ LPWSAOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine,
+  /*IN*/ LPWSATHREADID  lpThreadId,
+  /*OUT*/ LPINT  lpErrno);
+
+typedef int WSPAPI
+(*LPFN_WSPRDMAWRITE)(
+  /*IN*/ SOCKET  s,
+  /*IN*/ LPWSABUFEX  lpBuffers,
+  /*IN*/ DWORD  dwBufferCount,
+  /*IN*/ LPVOID  lpTargetBufferDescriptor,
+  /*IN*/ DWORD  dwTargetDescriptorLength,
+  /*IN*/ DWORD  dwTargetBufferOffset,
+  /*OUT*/ LPDWORD  lpdwNumberOfBytesWritten,
+  /*IN*/ DWORD  dwFlags,
+  /*IN*/ LPWSAOVERLAPPED  lpOverlapped,
+  /*IN*/ LPWSAOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine,
+  /*IN*/ LPWSATHREADID  lpThreadId,
+  /*OUT*/ LPINT  lpErrno);
+
+HANDLE WSPAPI
+WSPRegisterMemory(
+  /*IN*/ SOCKET  s,
+  /*IN*/ PVOID  lpBuffer,
+  /*IN*/ DWORD  dwBufferLength,
+  /*IN*/ DWORD  dwFlags,
+  /*OUT*/ LPINT  lpErrno);
+
+int WSPAPI
+WSPRegisterRdmaMemory(
+  /*IN*/ SOCKET  s,
+  /*IN*/ PVOID  lpBuffer,
+  /*IN*/ DWORD  dwBufferLength,
+  /*IN*/ DWORD  dwFlags,
+  /*OUT*/ LPVOID  lpRdmaBufferDescriptor,
+  /*IN OUT*/ LPDWORD  lpdwDescriptorLength,
+  /*OUT*/ LPINT  lpErrno);
+
+typedef int WSPAPI
+(*LPFN_WSPREGISTERRDMAMEMORY)(
+  /*IN*/ SOCKET  s,
+  /*IN*/ PVOID  lpBuffer,
+  /*IN*/ DWORD  dwBufferLength,
+  /*IN*/ DWORD  dwFlags,
+  /*OUT*/ LPVOID  lpRdmaBufferDescriptor,
+  /*IN OUT*/ LPDWORD  lpdwDescriptorLength,
+  /*OUT*/ LPINT  lpErrno);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WS2SAN_H */