summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/k_linked_list.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-04-10 07:10:14 +0200
committerbunnei <bunneidev@gmail.com>2021-05-06 01:40:51 +0200
commitb6156e735cd78d4b7863491ae6bdc63e44404b73 (patch)
treee1ec7753ea7c86223135e2f51b1b1f649af48b90 /src/core/hle/kernel/k_linked_list.h
parenthle: kernel: Ensure all kernel objects with KAutoObject are properly created. (diff)
downloadyuzu-b6156e735cd78d4b7863491ae6bdc63e44404b73.tar
yuzu-b6156e735cd78d4b7863491ae6bdc63e44404b73.tar.gz
yuzu-b6156e735cd78d4b7863491ae6bdc63e44404b73.tar.bz2
yuzu-b6156e735cd78d4b7863491ae6bdc63e44404b73.tar.lz
yuzu-b6156e735cd78d4b7863491ae6bdc63e44404b73.tar.xz
yuzu-b6156e735cd78d4b7863491ae6bdc63e44404b73.tar.zst
yuzu-b6156e735cd78d4b7863491ae6bdc63e44404b73.zip
Diffstat (limited to 'src/core/hle/kernel/k_linked_list.h')
-rw-r--r--src/core/hle/kernel/k_linked_list.h15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/core/hle/kernel/k_linked_list.h b/src/core/hle/kernel/k_linked_list.h
index 8362b6eda..8218bac8d 100644
--- a/src/core/hle/kernel/k_linked_list.h
+++ b/src/core/hle/kernel/k_linked_list.h
@@ -11,6 +11,8 @@
namespace Kernel {
+class KernelCore;
+
class KLinkedListNode : public boost::intrusive::list_base_hook<>,
public KSlabAllocated<KLinkedListNode> {
private:
@@ -118,11 +120,11 @@ public:
};
public:
- constexpr KLinkedList() : BaseList() {}
+ constexpr KLinkedList(KernelCore& kernel_) : BaseList(), kernel{kernel_} {}
~KLinkedList() {
// Erase all elements.
- for (auto it = this->begin(); it != this->end(); it = this->erase(it)) {
+ for (auto it = this->begin(); it != this->end(); it = this->erase(kernel, it)) {
}
// Ensure we succeeded.
@@ -199,7 +201,7 @@ public:
}
iterator insert(const_iterator pos, reference ref) {
- KLinkedListNode* node = KLinkedListNode::Allocate();
+ KLinkedListNode* node = KLinkedListNode::Allocate(kernel);
ASSERT(node != nullptr);
node->Initialize(std::addressof(ref));
return iterator(BaseList::insert(pos.m_base_it, *node));
@@ -221,13 +223,16 @@ public:
this->erase(this->begin());
}
- iterator erase(const iterator pos) {
+ iterator erase(KernelCore& kernel, const iterator pos) {
KLinkedListNode* freed_node = std::addressof(*pos.m_base_it);
iterator ret = iterator(BaseList::erase(pos.m_base_it));
- KLinkedListNode::Free(freed_node);
+ KLinkedListNode::Free(kernel, freed_node);
return ret;
}
+
+private:
+ KernelCore& kernel;
};
} // namespace Kernel