diff -r 000000000000 -r 76b1f169d9fe mingw-5.1.4/win32/include/ddk/ws2san.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mingw-5.1.4/win32/include/ddk/ws2san.h Fri Apr 03 17:16:45 2009 +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 + * + * 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 +#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 */