|
@@ -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 CTR-OS. It can be further
|
|
|
|
|
- * 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;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ /// This is the maximum limit of handles allowed per process in Horizon
|
|
|
|
|
+ static constexpr std::size_t MAX_COUNT = 1024;
|
|
|
|
|
|
|
|
/// 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;
|