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;