mirror of
https://github.com/winfsp/winfsp.git
synced 2025-07-03 17:32:57 -05:00
sys: consolidate Timeout functionality (ioq.c not included)
This commit is contained in:
@ -326,6 +326,39 @@ ULONG FspHashMixPointer(PVOID Pointer)
|
||||
#endif
|
||||
}
|
||||
|
||||
/* timeouts */
|
||||
#define FspTimeoutInfinity32 ((UINT32)-1L)
|
||||
#define FspTimeoutInfinity64 ((UINT64)-1LL)
|
||||
static inline
|
||||
UINT64 FspTimeoutFromMillis(UINT32 Millis)
|
||||
{
|
||||
/* if Millis is 0 or -1 then sign-extend else 10000ULL * Millis */
|
||||
return 1 >= Millis + 1 ? (INT64)(INT32)Millis : 10000ULL * Millis;
|
||||
}
|
||||
static inline
|
||||
UINT64 FspExpirationTimeFromMillis(UINT32 Millis)
|
||||
{
|
||||
/* if Millis is 0 or -1 then sign-extend else KeQueryInterruptTime() + 10000ULL * Millis */
|
||||
return 1 >= Millis + 1 ? (INT64)(INT32)Millis : KeQueryInterruptTime() + 10000ULL * Millis;
|
||||
}
|
||||
static inline
|
||||
UINT64 FspExpirationTimeFromTimeout(UINT64 Timeout)
|
||||
{
|
||||
/* if Timeout is 0 or -1 then Timeout else KeQueryInterruptTime() + Timeout */
|
||||
return 1 >= Timeout + 1 ? Timeout : KeQueryInterruptTime() + Timeout;
|
||||
}
|
||||
static inline
|
||||
BOOLEAN FspExpirationTimeValid(UINT64 ExpirationTime)
|
||||
{
|
||||
/* if ExpirationTime is 0 or -1 then ExpirationTime else KeQueryInterruptTime() < ExpirationTime */
|
||||
return 1 >= ExpirationTime + 1 ? (0 != ExpirationTime) : (KeQueryInterruptTime() < ExpirationTime);
|
||||
}
|
||||
static inline
|
||||
BOOLEAN FspExpirationTimeValid2(UINT64 ExpirationTime, UINT64 CurrentTime)
|
||||
{
|
||||
return CurrentTime < ExpirationTime;
|
||||
}
|
||||
|
||||
/* utility */
|
||||
PVOID FspAllocatePoolMustSucceed(POOL_TYPE PoolType, SIZE_T Size, ULONG Tag);
|
||||
PVOID FspAllocateIrpMustSucceed(CCHAR StackSize);
|
||||
@ -704,9 +737,9 @@ VOID FspFileNodeDereference(FSP_FILE_NODE *FileNode)
|
||||
FspFileNodeDelete(FileNode);
|
||||
}
|
||||
VOID FspFileNodeAcquireSharedF(FSP_FILE_NODE *FileNode, ULONG Flags);
|
||||
BOOLEAN FspFileNodeTryAcquireSharedF(FSP_FILE_NODE *FileNode, ULONG Flags);
|
||||
BOOLEAN FspFileNodeTryAcquireSharedF(FSP_FILE_NODE *FileNode, ULONG Flags, BOOLEAN Wait);
|
||||
VOID FspFileNodeAcquireExclusiveF(FSP_FILE_NODE *FileNode, ULONG Flags);
|
||||
BOOLEAN FspFileNodeTryAcquireExclusiveF(FSP_FILE_NODE *FileNode, ULONG Flags);
|
||||
BOOLEAN FspFileNodeTryAcquireExclusiveF(FSP_FILE_NODE *FileNode, ULONG Flags, BOOLEAN Wait);
|
||||
VOID FspFileNodeSetOwnerF(FSP_FILE_NODE *FileNode, ULONG Flags, PVOID Owner);
|
||||
VOID FspFileNodeReleaseF(FSP_FILE_NODE *FileNode, ULONG Flags);
|
||||
VOID FspFileNodeReleaseOwnerF(FSP_FILE_NODE *FileNode, ULONG Flags, PVOID Owner);
|
||||
@ -728,9 +761,9 @@ BOOLEAN FspFileNodeTrySetSecurity(FSP_FILE_NODE *FileNode, PCVOID Buffer, ULONG
|
||||
NTSTATUS FspFileDescCreate(FSP_FILE_DESC **PFileDesc);
|
||||
VOID FspFileDescDelete(FSP_FILE_DESC *FileDesc);
|
||||
#define FspFileNodeAcquireShared(N,F) FspFileNodeAcquireSharedF(N, FspFileNodeAcquire ## F)
|
||||
#define FspFileNodeTryAcquireShared(N,F) FspFileNodeTryAcquireSharedF(N, FspFileNodeAcquire ## F)
|
||||
#define FspFileNodeTryAcquireShared(N,F) FspFileNodeTryAcquireSharedF(N, FspFileNodeAcquire ## F, FALSE)
|
||||
#define FspFileNodeAcquireExclusive(N,F) FspFileNodeAcquireExclusiveF(N, FspFileNodeAcquire ## F)
|
||||
#define FspFileNodeTryAcquireExclusive(N,F) FspFileNodeTryAcquireExclusiveF(N, FspFileNodeAcquire ## F)
|
||||
#define FspFileNodeTryAcquireExclusive(N,F) FspFileNodeTryAcquireExclusiveF(N, FspFileNodeAcquire ## F, FALSE)
|
||||
#define FspFileNodeSetOwner(N,F,P) FspFileNodeSetOwnerF(N, FspFileNodeAcquire ## F, P)
|
||||
#define FspFileNodeRelease(N,F) FspFileNodeReleaseF(N, FspFileNodeAcquire ## F)
|
||||
#define FspFileNodeReleaseOwner(N,F,P) FspFileNodeReleaseOwnerF(N, FspFileNodeAcquire ## F, P)
|
||||
|
Reference in New Issue
Block a user