reactos/drivers/filesystems/udfs/Include/CrossNt/rwlock.h

40 lines
1 KiB
C

#ifndef __CROSS_NT_RWLOCK__H__
#define __CROSS_NT_RWLOCK__H__
#ifndef MAXIMUM_PROCESSORS
#define MAXIMUM_PROCESSORS 32
#endif
typedef union _NDIS_RW_LOCK_REFCOUNT {
unsigned int RefCount;
UCHAR cacheLine[16]; // One refCount per cache line
} NDIS_RW_LOCK_REFCOUNT;
typedef struct _NDIS_RW_LOCK {
union {
struct {
KSPIN_LOCK SpinLock;
PVOID Context;
};
UCHAR Reserved[16];
};
NDIS_RW_LOCK_REFCOUNT RefCount[MAXIMUM_PROCESSORS];
} NDIS_RW_LOCK, *PNDIS_RW_LOCK;
typedef struct _LOCK_STATE {
USHORT LockState;
KIRQL OldIrql;
} LOCK_STATE, *PLOCK_STATE;
#define RWLOCK_STATE_FREE 0
#define RWLOCK_STATE_READ_ACQUIRED 1
#define RWLOCK_STATE_WRITE_ACQUIRED 2
#define RWLOCK_STATE_RECURSIVE 3
#define RWLOCK_STATE_RELEASED 0xffff
#define RWLOCK_FOR_WRITE TRUE
#define RWLOCK_FOR_READ FALSE
#endif /* __CROSS_NT_RWLOCK__H__ */