diff options
author | bunnei <ericbunnie@gmail.com> | 2014-05-16 00:26:28 +0200 |
---|---|---|
committer | bunnei <ericbunnie@gmail.com> | 2014-05-16 00:26:28 +0200 |
commit | a7cc430aa4da2962dcf08db2f6009fc272bdda70 (patch) | |
tree | ba494a655541d038a5ac0d9e078ebef031461598 /src/core/hle/kernel | |
parent | - added ThreadContext struct (diff) | |
download | yuzu-a7cc430aa4da2962dcf08db2f6009fc272bdda70.tar yuzu-a7cc430aa4da2962dcf08db2f6009fc272bdda70.tar.gz yuzu-a7cc430aa4da2962dcf08db2f6009fc272bdda70.tar.bz2 yuzu-a7cc430aa4da2962dcf08db2f6009fc272bdda70.tar.lz yuzu-a7cc430aa4da2962dcf08db2f6009fc272bdda70.tar.xz yuzu-a7cc430aa4da2962dcf08db2f6009fc272bdda70.tar.zst yuzu-a7cc430aa4da2962dcf08db2f6009fc272bdda70.zip |
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r-- | src/core/hle/kernel/kernel.cpp | 10 | ||||
-rw-r--r-- | src/core/hle/kernel/kernel.h | 29 |
2 files changed, 21 insertions, 18 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 1c26fb388..f7145ddd8 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp @@ -27,7 +27,7 @@ KernelObjectPool::KernelObjectPool() { next_id = INITIAL_NEXT_ID; } -UID KernelObjectPool::Create(KernelObject *obj, int range_bottom, int range_top) { +Handle KernelObjectPool::Create(KernelObject *obj, int range_bottom, int range_top) { if (range_top > MAX_COUNT) { range_top = MAX_COUNT; } @@ -38,7 +38,7 @@ UID KernelObjectPool::Create(KernelObject *obj, int range_bottom, int range_top) if (!occupied[i]) { occupied[i] = true; pool[i] = obj; - pool[i]->uid = i + HANDLE_OFFSET; + pool[i]->handle = i + HANDLE_OFFSET; return i + HANDLE_OFFSET; } } @@ -46,7 +46,7 @@ UID KernelObjectPool::Create(KernelObject *obj, int range_bottom, int range_top) return 0; } -bool KernelObjectPool::IsValid(UID handle) +bool KernelObjectPool::IsValid(Handle handle) { int index = handle - HANDLE_OFFSET; if (index < 0) @@ -70,7 +70,7 @@ void KernelObjectPool::Clear() next_id = INITIAL_NEXT_ID; } -KernelObject *&KernelObjectPool::operator [](UID handle) +KernelObject *&KernelObjectPool::operator [](Handle handle) { _dbg_assert_msg_(KERNEL, IsValid(handle), "GRABBING UNALLOCED KERNEL OBJ"); return pool[handle - HANDLE_OFFSET]; @@ -148,7 +148,7 @@ bool __KernelLoadExec(u32 entry_point) { Core::g_app_core->SetPC(entry_point); // 0x30 is the typical main thread priority I've seen used so far - UID thread_id = __KernelSetupRootThread(0xDEADBEEF, 0, 0x30); + Handle thread_id = __KernelSetupMainThread(0x30); return true; } diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index 0eb58210c..24d422682 100644 --- a/src/core/hle/kernel/kernel.h +++ b/src/core/hle/kernel/kernel.h @@ -6,7 +6,7 @@ #include "common/common_types.h" -typedef u32 UID; +typedef s32 Handle; enum KernelIDType { KERNEL_ID_TYPE_THREAD = 1, @@ -15,20 +15,23 @@ enum KernelIDType { KERNEL_ID_TYPE_EVENT = 4, }; +enum { + KERNELOBJECT_MAX_NAME_LENGTH = 255, +}; + #define KERNELOBJECT_MAX_NAME_LENGTH 31 class KernelObjectPool; class KernelObject { friend class KernelObjectPool; - u32 uid; + u32 handle; public: virtual ~KernelObject() {} - UID GetUID() const { return uid; } + Handle GetHandle() const { return handle; } virtual const char *GetTypeName() { return "[BAD KERNEL OBJECT TYPE]"; } virtual const char *GetName() { return "[UNKNOWN KERNEL OBJECT]"; } virtual KernelIDType GetIDType() const = 0; - //virtual void GetQuickInfo(char *ptr, int size); }; class KernelObjectPool { @@ -36,13 +39,13 @@ public: KernelObjectPool(); ~KernelObjectPool() {} - // Allocates a UID within the range and inserts the object into the map. - UID Create(KernelObject *obj, int range_bottom=INITIAL_NEXT_ID, int range_top=0x7FFFFFFF); + // Allocates a handle within the range and inserts the object into the map. + Handle Create(KernelObject *obj, int range_bottom=INITIAL_NEXT_ID, int range_top=0x7FFFFFFF); static KernelObject *CreateByIDType(int type); template <class T> - u32 Destroy(UID handle) { + u32 Destroy(Handle handle) { u32 error; if (Get<T>(handle, error)) { occupied[handle - HANDLE_OFFSET] = false; @@ -51,10 +54,10 @@ public: return error; }; - bool IsValid(UID handle); + bool IsValid(Handle handle); template <class T> - T* Get(UID handle, u32& outError) { + T* Get(Handle handle, u32& outError) { if (handle < HANDLE_OFFSET || handle >= HANDLE_OFFSET + MAX_COUNT || !occupied[handle - HANDLE_OFFSET]) { // Tekken 6 spams 0x80020001 gets wrong with no ill effects, also on the real PSP if (handle != 0 && (u32)handle != 0x80020001) { @@ -79,8 +82,8 @@ public: // ONLY use this when you know the handle is valid. template <class T> - T *GetFast(UID handle) { - const UID realHandle = handle - HANDLE_OFFSET; + T *GetFast(Handle handle) { + const Handle realHandle = handle - HANDLE_OFFSET; _dbg_assert_(KERNEL, realHandle >= 0 && realHandle < MAX_COUNT && occupied[realHandle]); return static_cast<T *>(pool[realHandle]); } @@ -100,7 +103,7 @@ public: } } - bool GetIDType(UID handle, int *type) const { + bool GetIDType(Handle handle, int *type) const { if ((handle < HANDLE_OFFSET) || (handle >= HANDLE_OFFSET + MAX_COUNT) || !occupied[handle - HANDLE_OFFSET]) { ERROR_LOG(KERNEL, "Kernel: Bad object handle %i (%08x)", handle, handle); @@ -111,7 +114,7 @@ public: return true; } - KernelObject *&operator [](UID handle); + KernelObject *&operator [](Handle handle); void List(); void Clear(); int GetCount(); |