From b77a57a0e3ce9a7ba9d393a21cef825af5c24917 Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Sat, 11 Jul 2026 01:39:23 +0200 Subject: [PATCH] Add quota management spinlock and expose ReturnProcessQuota --- xtoskrnl/includes/ps/quota.hh | 10 +++++----- xtoskrnl/ps/data.cc | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/xtoskrnl/includes/ps/quota.hh b/xtoskrnl/includes/ps/quota.hh index a97ac62..4129e93 100644 --- a/xtoskrnl/includes/ps/quota.hh +++ b/xtoskrnl/includes/ps/quota.hh @@ -19,19 +19,19 @@ namespace PS { private: STATIC EPROCESS_QUOTA_BLOCK DefaultQuotaBlock; + STATIC KSPIN_LOCK QuotaLock; public: + STATIC XTFASTCALL VOID ReturnProcessQuota(IN PEPROCESS_QUOTA_BLOCK QuotaBlock, + IN PEPROCESS Process, + IN PS_QUOTA_TYPE QuotaType, + IN SIZE_T Amount); STATIC XTAPI VOID ReturnSharedPoolQuota(IN PEPROCESS_QUOTA_BLOCK QuotaBlock, IN SIZE_T PagedAmount, IN SIZE_T NonPagedAmount); private: STATIC XTAPI VOID DereferenceQuotaBlock(IN PEPROCESS_QUOTA_BLOCK QuotaBlock); - STATIC XTFASTCALL VOID ReturnProcessQuota(IN PEPROCESS_QUOTA_BLOCK QuotaBlock, - IN PEPROCESS Process, - IN PS_QUOTA_TYPE QuotaType, - IN SIZE_T Amount); - }; } diff --git a/xtoskrnl/ps/data.cc b/xtoskrnl/ps/data.cc index b196cb7..ed2c545 100644 --- a/xtoskrnl/ps/data.cc +++ b/xtoskrnl/ps/data.cc @@ -20,3 +20,6 @@ POBJECT_TYPE PS::ProcessManager::ThreadType; /* Default system-wide quota block assigned to processes */ EPROCESS_QUOTA_BLOCK PS::Quota::DefaultQuotaBlock; + +/* Lock used for quota management */ +KSPIN_LOCK PS::Quota::QuotaLock;