summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/k_auto_object_container.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel/k_auto_object_container.cpp')
-rw-r--r--src/core/hle/kernel/k_auto_object_container.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/core/hle/kernel/k_auto_object_container.cpp b/src/core/hle/kernel/k_auto_object_container.cpp
new file mode 100644
index 000000000..9ba8a54c7
--- /dev/null
+++ b/src/core/hle/kernel/k_auto_object_container.cpp
@@ -0,0 +1,35 @@
+// Copyright 2021 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/kernel/k_auto_object_container.h"
+
+namespace Kernel {
+
+void KAutoObjectWithListContainer::Register(KAutoObjectWithList* obj) {
+ KScopedLightLock lk(m_lock);
+
+ m_object_list.insert(*obj);
+}
+
+void KAutoObjectWithListContainer::Unregister(KAutoObjectWithList* obj) {
+ KScopedLightLock lk(m_lock);
+
+ m_object_list.erase(m_object_list.iterator_to(*obj));
+}
+
+size_t KAutoObjectWithListContainer::GetOwnedCount(Process* owner) {
+ KScopedLightLock lk(m_lock);
+
+ size_t count = 0;
+
+ for (auto& obj : m_object_list) {
+ if (obj.GetOwner() == owner) {
+ count++;
+ }
+ }
+
+ return count;
+}
+
+} // namespace Kernel