Add push lock structures
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in 42s
Builds / ExectOS (i686, release) (push) Successful in 36s
Builds / ExectOS (amd64, release) (push) Successful in 38s
Builds / ExectOS (i686, debug) (push) Successful in 40s

This commit is contained in:
2026-06-27 01:36:11 +02:00
parent a54c4b48fb
commit 757acb732e
2 changed files with 35 additions and 0 deletions

View File

@@ -47,6 +47,9 @@
/* APC pending state length */ /* APC pending state length */
#define KAPC_STATE_LENGTH (FIELD_OFFSET(KAPC_STATE, UserApcPending) + sizeof(BOOLEAN)) #define KAPC_STATE_LENGTH (FIELD_OFFSET(KAPC_STATE, UserApcPending) + sizeof(BOOLEAN))
/* Push lock total bits */
#define KPUSH_LOCK_TOTAL_BITS (sizeof(ULONG_PTR) * 8)
/* Kernel service descriptor tables count */ /* Kernel service descriptor tables count */
#define KSERVICE_TABLES_COUNT 4 #define KSERVICE_TABLES_COUNT 4
@@ -446,6 +449,36 @@ typedef struct _KGATE
DISPATCHER_HEADER Header; DISPATCHER_HEADER Header;
} KGATE, *PKGATE; } KGATE, *PKGATE;
/* Push Lock structure definition */
typedef union _KPUSH_LOCK
{
struct
{
ULONG_PTR Locked:1;
ULONG_PTR Waiting:1;
ULONG_PTR Waking:1;
ULONG_PTR MultipleShared:1;
ULONG_PTR Shared:(KPUSH_LOCK_TOTAL_BITS - 4);
};
ULONG_PTR Value;
PVOID Ptr;
} KPUSH_LOCK, *PKPUSH_LOCK;
/* Push lock wait block structure definition */
typedef struct _KPUSH_LOCK_WAIT_BLOCK
{
union
{
KGATE WakeGate;
KEVENT WakeEvent;
};
PKPUSH_LOCK_WAIT_BLOCK Next;
PKPUSH_LOCK_WAIT_BLOCK Last;
PKPUSH_LOCK_WAIT_BLOCK Previous;
LONG ShareCount;
LONG Flags;
} KPUSH_LOCK_WAIT_BLOCK, *PKPUSH_LOCK_WAIT_BLOCK;
/* Semaphore object structure definition */ /* Semaphore object structure definition */
typedef struct _KSEMAPHORE typedef struct _KSEMAPHORE
{ {

View File

@@ -266,6 +266,7 @@ typedef struct _KEVENT KEVENT, *PKEVENT;
typedef struct _KGATE KGATE, *PKGATE; typedef struct _KGATE KGATE, *PKGATE;
typedef struct _KLOCK_QUEUE_HANDLE KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE; typedef struct _KLOCK_QUEUE_HANDLE KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE;
typedef struct _KPROCESS KPROCESS, *PKPROCESS; typedef struct _KPROCESS KPROCESS, *PKPROCESS;
typedef struct _KPUSH_LOCK_WAIT_BLOCK KPUSH_LOCK_WAIT_BLOCK, *PKPUSH_LOCK_WAIT_BLOCK;
typedef struct _KQUEUE KQUEUE, *PKQUEUE; typedef struct _KQUEUE KQUEUE, *PKQUEUE;
typedef struct _KSEMAPHORE KSEMAPHORE, *PKSEMAPHORE; typedef struct _KSEMAPHORE KSEMAPHORE, *PKSEMAPHORE;
typedef struct _KSERVICE_DESCRIPTOR_TABLE KSERVICE_DESCRIPTOR_TABLE, *PKSERVICE_DESCRIPTOR_TABLE; typedef struct _KSERVICE_DESCRIPTOR_TABLE KSERVICE_DESCRIPTOR_TABLE, *PKSERVICE_DESCRIPTOR_TABLE;
@@ -387,6 +388,7 @@ typedef union _EFI_IA32_REGISTER_SET EFI_IA32_REGISTER_SET, *PEFI_IA32_REGISTER_
typedef union _EFI_IP_ADDRESS EFI_IP_ADDRESS, *PEFI_IP_ADDRESS; typedef union _EFI_IP_ADDRESS EFI_IP_ADDRESS, *PEFI_IP_ADDRESS;
typedef union _EFI_PXE_BASE_CODE_PACKET EFI_PXE_BASE_CODE_PACKET, *PEFI_PXE_BASE_CODE_PACKET; typedef union _EFI_PXE_BASE_CODE_PACKET EFI_PXE_BASE_CODE_PACKET, *PEFI_PXE_BASE_CODE_PACKET;
typedef union _EX_RUNDOWN_REFERENCE EX_RUNDOWN_REFERENCE, *PEX_RUNDOWN_REFERENCE; typedef union _EX_RUNDOWN_REFERENCE EX_RUNDOWN_REFERENCE, *PEX_RUNDOWN_REFERENCE;
typedef union _KPUSH_LOCK KPUSH_LOCK, *PKPUSH_LOCK;
typedef union _LARGE_INTEGER LARGE_INTEGER, *PLARGE_INTEGER; typedef union _LARGE_INTEGER LARGE_INTEGER, *PLARGE_INTEGER;
typedef union _ULARGE_INTEGER ULARGE_INTEGER, *PULARGE_INTEGER; typedef union _ULARGE_INTEGER ULARGE_INTEGER, *PULARGE_INTEGER;