#ifndef TDSMAPI_H
#define TDSMAPI_H
osGLOBAL void
tdsmIDCompletedCB(
smRoot_t *smRoot,
smIORequest_t *smIORequest,
smDeviceHandle_t *smDeviceHandle,
bit32 status,
void *IDdata
);
osGLOBAL FORCEINLINE void
tdsmIOCompletedCB(
smRoot_t *smRoot,
smIORequest_t *smIORequest,
bit32 status,
bit32 statusDetail,
smSenseData_t *senseData,
bit32 interruptContext
);
osGLOBAL void
tdsmEventCB(
smRoot_t *smRoot,
smDeviceHandle_t *smDeviceHandle,
smIntrEventType_t eventType,
bit32 eventStatus,
void *parm
);
osGLOBAL FORCEINLINE void
tdsmSingleThreadedEnter(
smRoot_t *smRoot,
bit32 syncLockId
);
osGLOBAL FORCEINLINE void
tdsmSingleThreadedLeave(
smRoot_t *smRoot,
bit32 syncLockId
);
osGLOBAL FORCEINLINE bit8
tdsmBitScanForward(
smRoot_t *smRoot,
bit32 *Index,
bit32 Mask
);
#ifdef LINUX_VERSION_CODE
osGLOBAL FORCEINLINE sbit32
tdsmInterlockedIncrement(
smRoot_t *smRoot,
sbit32 volatile *Addend
);
osGLOBAL FORCEINLINE sbit32
tdsmInterlockedDecrement(
smRoot_t *smRoot,
sbit32 volatile *Addend
);
osGLOBAL FORCEINLINE sbit32
tdsmAtomicBitClear(
smRoot_t *smRoot,
sbit32 volatile *Destination,
sbit32 Value
);
osGLOBAL FORCEINLINE sbit32
tdsmAtomicBitSet(
smRoot_t *smRoot,
sbit32 volatile *Destination,
sbit32 Value
);
osGLOBAL FORCEINLINE sbit32
tdsmAtomicExchange(
smRoot_t *smRoot,
sbit32 volatile *Target,
sbit32 Value
);
#else
osGLOBAL FORCEINLINE sbit32
tdsmInterlockedIncrement(
smRoot_t *smRoot,
sbit32 volatile *Addend
);
osGLOBAL FORCEINLINE sbit32
tdsmInterlockedDecrement(
smRoot_t *smRoot,
sbit32 volatile *Addend
);
osGLOBAL FORCEINLINE sbit32
tdsmInterlockedAnd(
smRoot_t *smRoot,
sbit32 volatile *Destination,
sbit32 Value
);
osGLOBAL FORCEINLINE sbit32
tdsmInterlockedOr(
smRoot_t *smRoot,
sbit32 volatile *Destination,
sbit32 Value
);
osGLOBAL FORCEINLINE sbit32
tdsmInterlockedExchange(
smRoot_t *smRoot,
sbit32 volatile *Target,
sbit32 Value
);
#endif
osGLOBAL bit32
tdsmAllocMemory(
smRoot_t *smRoot,
void **osMemHandle,
void ** virtPtr,
bit32 * physAddrUpper,
bit32 * physAddrLower,
bit32 alignment,
bit32 allocLength,
smBOOLEAN isCacheable
);
osGLOBAL bit32
tdsmFreeMemory(
smRoot_t *smRoot,
void *osDMAHandle,
bit32 allocLength
);
osGLOBAL FORCEINLINE bit32
tdsmRotateQnumber(smRoot_t *smRoot,
smDeviceHandle_t *smDeviceHandle
);
osGLOBAL bit32
tdsmSetDeviceQueueDepth(smRoot_t *smRoot,
smIORequest_t *smIORequest,
bit32 QueueDepth
);
#ifndef tdsmLogDebugString
GLOBAL void tdsmLogDebugString(
smRoot_t *smRoot,
bit32 level,
char *string,
void *ptr1,
void *ptr2,
bit32 value1,
bit32 value2
);
#endif
osGLOBAL bit32 tdsmGetTransportParam(
smRoot_t *smRoot,
char *key,
char *subkey1,
char *subkey2,
char *subkey3,
char *subkey4,
char *subkey5,
char *valueName,
char *buffer,
bit32 bufferLen,
bit32 *lenReceived
);
#endif