I found a note, in Kernel Mustard's (Steve Dispensa) blog, about guarded mutexes, which is a completely new synchronization object to me.
typedef struct _KGUARDED_MUTEX ULONG Count; PKTHREAD Owner; ULONG Contention; KGATE Gate; WORD KernelApcDisable; WORD SpecialApcDisable; ULONG CombinedApcDisable; } KGUARDED_MUTEX, *PKGUARDED_MUTEX;
What are they? KM says they are less expensive than FAST_MUTEXes.
By the way, what is a KGATE?
Emanuele
Filip Navara wrote:
Aliberti Emanuele wrote:
What are they? KM says they are less expensive than FAST_MUTEXes.
They're similar to fast mutexes, but do not block APCs by raising IRQL to APC_LEVEL. Instead they just enter critical section (called Guarded Region).
Ros-dev mailing list Ros-dev@reactos.com http://reactos.com:8080/mailman/listinfo/ros-dev
They are also talked about in the Syncronization PDFs, on page 45.
Gates are a stripped-down Dispatcher Object, which are very similar to Events. They can only be initialized and waited on. They also have Priorities and Boosts that can be applied to them. (Once again, just like Events).
Best regards, Alex Ionescu