meso: add FindObject to KObjectAllocator *

This commit is contained in:
TuxSH 2018-11-19 11:19:25 +01:00 committed by Michael Scire
parent 1a924ad317
commit 6642373795
3 changed files with 16 additions and 2 deletions

View file

@ -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{};

View file

@ -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>

View file

@ -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>