meso: add FindObject to KObjectAllocator *

This commit is contained in:
TuxSH authored and Michael Scire committed 2019-06-03 17:41:09 -07:00
1 parent 1a924ad317
commit 6642373795
3 files changed
+16 -2

No files matched your search

@@ -1,6 +1,7 @@
#pragma once
#include <boost/intrusive/set.hpp>
#include <mesosphere/core/util.hpp>
#include <mesosphere/core/KAutoObject.hpp>
#include <mesosphere/kresources/KSlabHeap.hpp>
#include <mesosphere/threading/KMutex.hpp>
@@ -17,6 +18,14 @@ class KObjectAllocator {
}
};
struct ComparatorEqual {
constexpr u64 operator()(const T &val) const
{
return val.GetComparisonKey();
}
};
public:
struct HookTag;
@@ -29,6 +38,7 @@ class KObjectAllocator {
T,
boost::intrusive::base_hook<AllocatedSetHookType>,
boost::intrusive::compare<Comparator>
//boost::intrusive::key_of_value<KeyOfValue>
>::type;
using pointer = T *;
@@ -61,6 +71,12 @@ class KObjectAllocator {
allocatedSet.erase(obj);
}
T *FindObject(u64 comparisonKey)
{
auto it = allocatedSet.find(comparisonKey, ComparatorEqual{});
return it != allocatedSet.end() ? &*it : nullptr;
}
private:
AllocatedSetType allocatedSet{};
KSlabHeap<T> slabHeap{};
@@ -2,7 +2,6 @@
#include <mesosphere/core/util.hpp>
#include <mesosphere/core/Result.hpp>
#include <mesosphere/core/KAutoObject.hpp>
#include <mesosphere/interfaces/ISetAllocated.hpp>
#include <mesosphere/interfaces/ILimitedResource.hpp>
#include <mesosphere/interfaces/IClientServerParent.hpp>
@@ -2,7 +2,6 @@
#include <mesosphere/core/util.hpp>
#include <mesosphere/core/Result.hpp>
#include <mesosphere/core/KAutoObject.hpp>
#include <mesosphere/interfaces/ISetAllocated.hpp>
#include <mesosphere/interfaces/IServer.hpp>