mirror of
https://github.com/reactos/reactos.git
synced 2025-06-22 21:00:17 +00:00
27 lines
826 B
C
27 lines
826 B
C
#ifndef _ROSRTL_RECMUTEX_H
|
|
#define _ROSRTL_RECMUTEX_H
|
|
|
|
typedef struct _RECURSIVE_MUTEX {
|
|
/* Lock. */
|
|
FAST_MUTEX Mutex;
|
|
/* Number of times this object was locked */
|
|
SIZE_T LockCount;
|
|
/* CurrentThread */
|
|
PVOID CurrentThread;
|
|
/* Notification event which signals that another thread can take over */
|
|
KEVENT StateLockedEvent;
|
|
/* IRQL from spin lock */
|
|
KIRQL OldIrql;
|
|
/* Is Locked */
|
|
BOOLEAN Locked;
|
|
/* Is reader or writer phase */
|
|
BOOLEAN Writer;
|
|
/* Spin lock needed for */
|
|
KSPIN_LOCK SpinLock;
|
|
} RECURSIVE_MUTEX, *PRECURSIVE_MUTEX;
|
|
|
|
extern VOID RecursiveMutexInit( PRECURSIVE_MUTEX RecMutex );
|
|
extern SIZE_T RecursiveMutexEnter( PRECURSIVE_MUTEX RecMutex, BOOLEAN ToRead );
|
|
extern VOID RecursiveMutexLeave( PRECURSIVE_MUTEX RecMutex );
|
|
|
|
#endif/*_ROSRTL_RECMUTEX_H*/
|