diff options
Diffstat (limited to 'sys/contrib/dev/nve/os.h')
-rw-r--r-- | sys/contrib/dev/nve/os.h | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/sys/contrib/dev/nve/os.h b/sys/contrib/dev/nve/os.h new file mode 100644 index 0000000..4749543 --- /dev/null +++ b/sys/contrib/dev/nve/os.h @@ -0,0 +1,128 @@ +/***************************************************************************\ +|* *| +|* Copyright 2001-2004 NVIDIA Corporation. All Rights Reserved. *| +|* *| +|* THE INFORMATION CONTAINED HEREIN IS PROPRIETARY AND CONFIDENTIAL *| +|* TO NVIDIA, CORPORATION. USE, REPRODUCTION OR DISCLOSURE TO ANY *| +|* THIRD PARTY IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORP. *| +|* *| +|* THE INFORMATION CONTAINED HEREIN IS PROVIDED "AS IS" WITHOUT *| +|* EXPRESS OR IMPLIED WARRANTY OF ANY KIND, INCLUDING ALL IMPLIED *| +|* WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A *| +|* PARTICULAR PURPOSE. *| +|* *| +\***************************************************************************/ + +/* + FILE: os.h + DATE: 2/7/00 + + This file contains the os interface. Note that the os interface is + itself an OS-independent API. The OS specific module is implemented + by ndis.c for Win9X/NT and linuxnet.c for linux. +*/ +#ifndef _OS_H_ +#define _OS_H_ + +#include "phy.h" + +#define HDO_VERSION_STRING "HDR O: $Revision: #21 $"; + +// This is the maximum packet size that we will be sending +// #define MAX_PACKET_SIZE 2048 +//#define RX_BUFFER_SIZE 2048 + +#define MIN_PACKET_MTU_SIZE 576 +#define MAX_PACKET_MTU_SIZE 9202 +#define MAX_PACKET_SIZE_2048 2048 +#define MAX_PACKET_SIZE_1514 1514 +#define MAX_PACKET_SIZE_1518 1518 +#define MAX_PACKET_SIZE_JUMBO (9 * 1024) + +typedef struct _MEMORY_BLOCK +{ + PNV_VOID pLogical; + PNV_VOID pPhysical; + NV_UINT32 uiLength; +} MEMORY_BLOCK, *PMEMORY_BLOCK; + +#define ALLOC_MEMORY_NONCACHED 0x0001 +#define ALLOC_MEMORY_ALIGNED 0x0002 + +typedef struct _MEMORY_BLOCKEX +{ + PNV_VOID pLogical; + PNV_VOID pPhysical; + NV_UINT32 uiLength; + /* Parameter to OS layer to indicate what type of memory is needed */ + NV_UINT16 AllocFlags; + NV_UINT16 AlignmentSize; //always power of 2 + /* Following three fields used for aligned memory allocation */ + PNV_VOID pLogicalOrig; + NV_UINT32 pPhysicalOrigLow; + NV_UINT32 pPhysicalOrigHigh; + NV_UINT32 uiLengthOrig; +} MEMORY_BLOCKEX, *PMEMORY_BLOCKEX; + + +// The typedefs for the OS functions +typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_ALLOC) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem); +typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_FREE) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem); +typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_ALLOCEX) (PNV_VOID pOSCX, PMEMORY_BLOCKEX pMem); +typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_FREEEX) (PNV_VOID pOSCX, PMEMORY_BLOCKEX pMem); +typedef NV_API_CALL NV_SINT32 (* PFN_CLEAR_MEMORY) (PNV_VOID pOSCX, PNV_VOID pMem, NV_SINT32 iLength); +typedef NV_API_CALL NV_SINT32 (* PFN_STALL_EXECUTION) (PNV_VOID pOSCX, NV_UINT32 ulTimeInMicroseconds); +typedef NV_API_CALL NV_SINT32 (* PFN_ALLOC_RECEIVE_BUFFER) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem, PNV_VOID *ppvID); +typedef NV_API_CALL NV_SINT32 (* PFN_FREE_RECEIVE_BUFFER) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem, PNV_VOID pvID); +typedef NV_API_CALL NV_SINT32 (* PFN_PACKET_WAS_SENT) (PNV_VOID pOSCX, PNV_VOID pvID, NV_UINT32 ulSuccess); +typedef NV_API_CALL NV_SINT32 (* PFN_PACKET_WAS_RECEIVED) (PNV_VOID pOSCX, PNV_VOID pvADReadData, NV_UINT32 ulSuccess, NV_UINT8 *pNewBuffer, NV_UINT8 uc8021pPriority); +typedef NV_API_CALL NV_SINT32 (* PFN_LINK_STATE_HAS_CHANGED) (PNV_VOID pOSCX, NV_SINT32 nEnabled); +typedef NV_API_CALL NV_SINT32 (* PFN_ALLOC_TIMER) (PNV_VOID pvContext, PNV_VOID *ppvTimer); +typedef NV_API_CALL NV_SINT32 (* PFN_FREE_TIMER) (PNV_VOID pvContext, PNV_VOID pvTimer); +typedef NV_API_CALL NV_SINT32 (* PFN_INITIALIZE_TIMER) (PNV_VOID pvContext, PNV_VOID pvTimer, PTIMER_FUNC pvFunc, PNV_VOID pvFuncParameter); +typedef NV_API_CALL NV_SINT32 (* PFN_SET_TIMER) (PNV_VOID pvContext, PNV_VOID pvTimer, NV_UINT32 dwMillisecondsDelay); +typedef NV_API_CALL NV_SINT32 (* PFN_CANCEL_TIMER) (PNV_VOID pvContext, PNV_VOID pvTimer); + +typedef NV_API_CALL NV_SINT32 (* PFN_PREPROCESS_PACKET) (PNV_VOID pvContext, PNV_VOID pvADReadData, PNV_VOID *ppvID, + NV_UINT8 *pNewBuffer, NV_UINT8 uc8021pPriority); +typedef NV_API_CALL PNV_VOID (* PFN_PREPROCESS_PACKET_NOPQ) (PNV_VOID pvContext, PNV_VOID pvADReadData); +typedef NV_API_CALL NV_SINT32 (* PFN_INDICATE_PACKETS) (PNV_VOID pvContext, PNV_VOID *ppvID, NV_UINT32 ulNumPacket); +typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_ALLOC) (PNV_VOID pOSCX, NV_SINT32 iLockType, PNV_VOID *ppvLock); +typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_ACQUIRE) (PNV_VOID pOSCX, NV_SINT32 iLockType, PNV_VOID pvLock); +typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_RELEASE) (PNV_VOID pOSCX, NV_SINT32 iLockType, PNV_VOID pvLock); +typedef NV_API_CALL PNV_VOID (* PFN_RETURN_BUFFER_VIRTUAL) (PNV_VOID pvContext, PNV_VOID pvADReadData); + +// Here are the OS functions that those objects below the OS interface +// can call up to. +typedef struct _OS_API +{ + // OS Context -- this is a parameter to every OS API call + PNV_VOID pOSCX; + + // Basic OS functions + PFN_MEMORY_ALLOC pfnAllocMemory; + PFN_MEMORY_FREE pfnFreeMemory; + PFN_MEMORY_ALLOCEX pfnAllocMemoryEx; + PFN_MEMORY_FREEEX pfnFreeMemoryEx; + PFN_CLEAR_MEMORY pfnClearMemory; + PFN_STALL_EXECUTION pfnStallExecution; + PFN_ALLOC_RECEIVE_BUFFER pfnAllocReceiveBuffer; + PFN_FREE_RECEIVE_BUFFER pfnFreeReceiveBuffer; + PFN_PACKET_WAS_SENT pfnPacketWasSent; + PFN_PACKET_WAS_RECEIVED pfnPacketWasReceived; + PFN_LINK_STATE_HAS_CHANGED pfnLinkStateHasChanged; + PFN_ALLOC_TIMER pfnAllocTimer; + PFN_FREE_TIMER pfnFreeTimer; + PFN_INITIALIZE_TIMER pfnInitializeTimer; + PFN_SET_TIMER pfnSetTimer; + PFN_CANCEL_TIMER pfnCancelTimer; + PFN_PREPROCESS_PACKET pfnPreprocessPacket; + PFN_PREPROCESS_PACKET_NOPQ pfnPreprocessPacketNopq; + PFN_INDICATE_PACKETS pfnIndicatePackets; + PFN_LOCK_ALLOC pfnLockAlloc; + PFN_LOCK_ACQUIRE pfnLockAcquire; + PFN_LOCK_RELEASE pfnLockRelease; + PFN_RETURN_BUFFER_VIRTUAL pfnReturnBufferVirtual; +} OS_API, *POS_API; + +#endif // _OS_H_ |