summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
authorbunnei <ericbunnie@gmail.com>2014-05-16 00:26:28 +0200
committerbunnei <ericbunnie@gmail.com>2014-05-16 00:26:28 +0200
commita7cc430aa4da2962dcf08db2f6009fc272bdda70 (patch)
treeba494a655541d038a5ac0d9e078ebef031461598 /src/core/hle/kernel
parent- added ThreadContext struct (diff)
downloadyuzu-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.cpp10
-rw-r--r--src/core/hle/kernel/kernel.h29
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();