mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-12-25 01:40:58 +01:00
Merge pull request #1767 from lioncash/handle
kernel/handle_table: Minor changes
This commit is contained in:
commit
f926559ef4
2 changed files with 14 additions and 12 deletions
|
@ -12,12 +12,23 @@
|
||||||
#include "core/hle/kernel/thread.h"
|
#include "core/hle/kernel/thread.h"
|
||||||
|
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
|
namespace {
|
||||||
|
constexpr u16 GetSlot(Handle handle) {
|
||||||
|
return handle >> 15;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr u16 GetGeneration(Handle handle) {
|
||||||
|
return handle & 0x7FFF;
|
||||||
|
}
|
||||||
|
} // Anonymous namespace
|
||||||
|
|
||||||
HandleTable::HandleTable() {
|
HandleTable::HandleTable() {
|
||||||
next_generation = 1;
|
next_generation = 1;
|
||||||
Clear();
|
Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HandleTable::~HandleTable() = default;
|
||||||
|
|
||||||
ResultVal<Handle> HandleTable::Create(SharedPtr<Object> obj) {
|
ResultVal<Handle> HandleTable::Create(SharedPtr<Object> obj) {
|
||||||
DEBUG_ASSERT(obj != nullptr);
|
DEBUG_ASSERT(obj != nullptr);
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,7 @@ enum KernelHandle : Handle {
|
||||||
class HandleTable final : NonCopyable {
|
class HandleTable final : NonCopyable {
|
||||||
public:
|
public:
|
||||||
HandleTable();
|
HandleTable();
|
||||||
|
~HandleTable();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocates a handle for the given object.
|
* Allocates a handle for the given object.
|
||||||
|
@ -89,18 +90,8 @@ public:
|
||||||
void Clear();
|
void Clear();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/// This is the maximum limit of handles allowed per process in Horizon
|
||||||
* This is the maximum limit of handles allowed per process in CTR-OS. It can be further
|
static constexpr std::size_t MAX_COUNT = 1024;
|
||||||
* reduced by ExHeader values, but this is not emulated here.
|
|
||||||
*/
|
|
||||||
static const std::size_t MAX_COUNT = 4096;
|
|
||||||
|
|
||||||
static u16 GetSlot(Handle handle) {
|
|
||||||
return handle >> 15;
|
|
||||||
}
|
|
||||||
static u16 GetGeneration(Handle handle) {
|
|
||||||
return handle & 0x7FFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Stores the Object referenced by the handle or null if the slot is empty.
|
/// Stores the Object referenced by the handle or null if the slot is empty.
|
||||||
std::array<SharedPtr<Object>, MAX_COUNT> objects;
|
std::array<SharedPtr<Object>, MAX_COUNT> objects;
|
||||||
|
|
Loading…
Reference in a new issue