mirror of
https://github.com/reactos/reactos.git
synced 2024-11-07 07:00:19 +00:00
39 lines
1 KiB
C
39 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__ */
|