mirror of
https://github.com/reactos/reactos.git
synced 2024-12-29 10:35:28 +00:00
40 lines
1 KiB
C
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__ */
|