summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrapheneCt2021-03-13 17:42:49 -0500
committerReiko Asakura2021-03-13 17:42:49 -0500
commite51fd6ff7fe4bd8e56f27afcf1f3b7057948ed75 (patch)
tree205b3c62f82936686801989fbd60eebd9dc9257d
parentAdd lint script for header files (diff)
downloadvds-libraries-e51fd6ff7fe4bd8e56f27afcf1f3b7057948ed75.tar.gz
Add ScePafThread functions
-rw-r--r--include/user/paf/thread.h232
-rw-r--r--nids/360/ScePaf.yml73
2 files changed, 305 insertions, 0 deletions
diff --git a/include/user/paf/thread.h b/include/user/paf/thread.h
new file mode 100644
index 0000000..481db69
--- /dev/null
+++ b/include/user/paf/thread.h
@@ -0,0 +1,232 @@
+/*
+ Vita Development Suite Libraries
+*/
+
+#ifndef _VDSUITE_USER_PAF_THREAD_H
+#define _VDSUITE_USER_PAF_THREAD_H
+
+#include <kernel.h>
+
+namespace paf {
+ namespace thread {
+
+ class DefaultThreadPriority
+ {
+ public:
+
+ DefaultThreadPriority();
+
+ static DefaultThreadPriority *Get();
+
+ SceVoid Set();
+
+ SceInt32 priority1;
+ SceInt32 priority2;
+ SceInt32 priority3;
+
+ };
+
+ class ThreadOpt
+ {
+ public:
+
+ ThreadOpt();
+
+ SceUInt32 attr;
+ SceInt32 cpuAffinityMask;
+ SceKernelMemBlockType stackMemoryType;
+
+ };
+
+ class Thread
+ {
+ public:
+
+ enum Error {
+ SCE_PAF_ERROR_THREADING_THREAD_ALREADY_STARTED = 0x80AF0702
+ };
+
+
+ Thread(SceInt32 initPriority, SceSize stackSize, const char *pName, const ThreadOpt *opt = SCE_NULL);
+
+ virtual ~Thread();
+
+ virtual SceVoid EntryFunction() = 0;
+
+ static SceInt32 InternalThreadEntry(SceSize argSize, void *pArgBlock);
+
+ static SceVoid SetMainThreadUID(SceInt32 threadNum = 0);
+
+ static SceUID GetMainThreadUID(SceInt32 threadNum = 0);
+
+ static SceBool IsMainThread(SceInt32 threadNum = 0);
+
+ static SceVoid Sleep(SceUInt32 msec);
+
+ SceInt32 Start();
+
+ SceVoid Join();
+
+ SceVoid ChangePriority(SceInt32 priority);
+
+ SceUID Self();
+
+ SceBool IsStarted();
+
+ //related to unk variable, unk set to SCE_FALSE by default
+ //ScePafThread_F95B2895 set unk to SCE_TRUE
+ //ScePafThread_4CE6D88B get unk
+
+ private:
+
+ SceUChar8 m_work[0x14];
+
+ };
+
+ class Sema
+ {
+ public:
+
+ Sema(const char *pName, SceInt32 initCount, SceInt32 maxCount);
+
+ ~Sema();
+
+ SceVoid Wait();
+
+ SceVoid Signal();
+
+ private:
+
+ SceUID m_uid;
+
+ };
+
+ class Mutex
+ {
+ public:
+
+ Mutex(const char *pName, SceBool isFifo);
+
+ ~Mutex();
+
+ SceVoid Lock();
+
+ SceBool TryLock();
+
+ SceVoid Unlock();
+
+ private:
+
+ SceInt64 m_work[4];
+
+ };
+
+ class Mutex2
+ {
+ public:
+
+ Mutex2(const char *pName, SceBool isFifo);
+
+ ~Mutex2();
+
+ SceVoid Lock();
+
+ SceBool TryLock();
+
+ SceVoid Unlock();
+
+ private:
+
+ SceInt64 m_work[4];
+
+ };
+
+ class Cond
+ {
+ public:
+
+ Cond(SceKernelLwMutexWork *pLwMutex, const char *pName, SceBool isFifo);
+
+ ~Cond();
+
+ SceBool Wait(SceUInt32 timeoutMsec = 0);
+
+ SceVoid Notify();
+
+ SceVoid NotifyAll();
+
+ private:
+
+ SceInt32 m_work[5];
+
+ };
+
+ class RWLock
+ {
+ public:
+
+ RWLock(const char *pName);
+
+ ~RWLock();
+
+ SceVoid LockShared();
+
+ SceVoid UnlockShared();
+
+ SceVoid LockExclusive();
+
+ SceVoid UnlockExclusive();
+
+ private:
+
+ SceInt32 m_work[0x8];
+
+ };
+
+ class Queue
+ {
+ public:
+
+ typedef void(*QueueEntryFunction)(void *pArgBlock);
+
+ Queue(const char *pName);
+
+ ~Queue();
+
+ SceVoid WaitDone();
+
+ SceVoid Push(const char *pName, QueueEntryFunction entry, void *pArgBlock);
+
+ SceVoid Execute();
+
+ SceUInt32 Size();
+
+ private:
+
+ SceUChar8 m_work[0x30];
+
+ };
+
+ class SyncCall
+ {
+ public:
+
+ typedef void(*SyncCallEntryFunction)(void *pArgBlock);
+
+ SyncCall(const char *pName);
+
+ ~SyncCall();
+
+ SceVoid Push(SyncCallEntryFunction entry, void *pArgBlock);
+
+ SceVoid Execute();
+
+ private:
+
+ SceUChar8 m_work[0x10];
+
+ };
+ }
+}
+
+#endif /* _VDSUITE_USER_PAF_THREAD_H */
diff --git a/nids/360/ScePaf.yml b/nids/360/ScePaf.yml
index 6917d31..29c4be6 100644
--- a/nids/360/ScePaf.yml
+++ b/nids/360/ScePaf.yml
@@ -142,6 +142,79 @@ modules:
sce_paf_wmemcpy: 0x19B5B91D
sce_paf_wmemmove: 0x468A09B1
sce_paf_wmemset: 0x36890967
+ ScePafThread:
+ nid: 0x54276D19
+ functions:
+ _ZN3paf6thread21DefaultThreadPriority3GetEv: 0x2AD8B80F
+ _ZN3paf6thread21DefaultThreadPriority3SetEv: 0x82A6C26A
+ _ZN3paf6thread21DefaultThreadPriorityC1Ev: 0xEE889AAF
+ _ZN3paf6thread21DefaultThreadPriorityC2Ev: 0x15F029A2
+ _ZN3paf6thread4Cond4WaitEj: 0x26225225
+ _ZN3paf6thread4Cond6NotifyEv: 0x733814FD
+ _ZN3paf6thread4Cond9NotifyAllEv: 0x12911164
+ _ZN3paf6thread4CondC1EP21_SceKernelLwMutexWorkPKci: 0xBA5BD169
+ _ZN3paf6thread4CondC2EP21_SceKernelLwMutexWorkPKci: 0x8291E6C4
+ _ZN3paf6thread4CondD1Ev: 0x52F363A9
+ _ZN3paf6thread4CondD2Ev: 0xE3D5D9BB
+ _ZN3paf6thread4Sema4WaitEv: 0xFB300461
+ _ZN3paf6thread4Sema6SignalEv: 0x534F14D4
+ _ZN3paf6thread4SemaC1EPKcii: 0x1089526C
+ _ZN3paf6thread4SemaC2EPKcii: 0xD1D39853
+ _ZN3paf6thread4SemaD1Ev: 0xE72CBBE1
+ _ZN3paf6thread4SemaD2Ev: 0x323F3E4D
+ _ZN3paf6thread5Mutex4LockEv: 0xF9FFA0BE
+ _ZN3paf6thread5Mutex6UnlockEv: 0x95F9C45F
+ _ZN3paf6thread5Mutex7TryLockEv: 0x18AF6844
+ _ZN3paf6thread5MutexC1EPKci: 0xC4BD9753
+ _ZN3paf6thread5MutexC2EPKci: 0xA48CABF3
+ _ZN3paf6thread5MutexD1Ev: 0x8CCECAC9
+ _ZN3paf6thread5MutexD2Ev: 0xD1BEBE2D
+ _ZN3paf6thread5Queue4PushEPKcPFvPvES4_: 0x23B8F66F
+ _ZN3paf6thread5Queue4SizeEv: 0x9F2131F9
+ _ZN3paf6thread5Queue7ExecuteEv: 0x98EA7399
+ _ZN3paf6thread5Queue8WaitDoneEv: 0x0164145D
+ _ZN3paf6thread5QueueC1EPKc: 0x5A72B9FC
+ _ZN3paf6thread5QueueC2EPKc: 0xA87BC0AE
+ _ZN3paf6thread5QueueD1Ev: 0xBE9A9155
+ _ZN3paf6thread5QueueD2Ev: 0x6B1322CB
+ _ZN3paf6thread6Mutex24LockEv: 0x4EA3A3D5
+ _ZN3paf6thread6Mutex26UnlockEv: 0x9100D580
+ _ZN3paf6thread6Mutex27TryLockEv: 0xE09598ED
+ _ZN3paf6thread6Mutex2C1EPKci: 0xA5D3F1B5
+ _ZN3paf6thread6Mutex2C2EPKci: 0xBC109843
+ _ZN3paf6thread6Mutex2D1Ev: 0xAD04A33D
+ _ZN3paf6thread6Mutex2D2Ev: 0x9BA75E36
+ _ZN3paf6thread6RWLock10LockSharedEv: 0xAFB836B3
+ _ZN3paf6thread6RWLock12UnlockSharedEv: 0x38D35DEF
+ _ZN3paf6thread6RWLock13LockExclusiveEv: 0x39B3F3CA
+ _ZN3paf6thread6RWLock15UnlockExclusiveEv: 0xAEE8496E
+ _ZN3paf6thread6RWLockC1EPKc: 0x02C1347F
+ _ZN3paf6thread6RWLockC2EPKc: 0x1ECE442B
+ _ZN3paf6thread6RWLockD1Ev: 0x221624F8
+ _ZN3paf6thread6RWLockD2Ev: 0x6FBDD800
+ _ZN3paf6thread6Thread12IsMainThreadEi: 0xD27FC881
+ _ZN3paf6thread6Thread14ChangePriorityEi: 0xFCCF62D6
+ _ZN3paf6thread6Thread16GetMainThreadUIDEi: 0xC6F80BB3
+ _ZN3paf6thread6Thread16SetMainThreadUIDEi: 0xFE2DC4FE
+ _ZN3paf6thread6Thread19InternalThreadEntryEjPv: 0x918D89FC
+ _ZN3paf6thread6Thread4JoinEv: 0xC5F24067
+ _ZN3paf6thread6Thread4SelfEv: 0x7E669E6E
+ _ZN3paf6thread6Thread5SleepEj: 0x651F4F81
+ _ZN3paf6thread6Thread5StartEv: 0x60910895
+ _ZN3paf6thread6Thread9IsStartedEv: 0x318AD6B7
+ _ZN3paf6thread6ThreadC1EijPKcPKNS0_9ThreadOptE: 0x6E829BD8
+ _ZN3paf6thread6ThreadC2EijPKcPKNS0_9ThreadOptE: 0x1740FB30
+ _ZN3paf6thread6ThreadD0Ev: 0x1013F3C0
+ _ZN3paf6thread6ThreadD1Ev: 0x52C62CD1
+ _ZN3paf6thread6ThreadD2Ev: 0x7EA6B501
+ _ZN3paf6thread8SyncCall4PushEPFvPvES2_: 0x004445E7
+ _ZN3paf6thread8SyncCall7ExecuteEv: 0x58876337
+ _ZN3paf6thread8SyncCallC1EPKc: 0x465970E2
+ _ZN3paf6thread8SyncCallC2EPKc: 0x94138DD2
+ _ZN3paf6thread8SyncCallD1Ev: 0xF17CAAB0
+ _ZN3paf6thread8SyncCallD2Ev: 0xA8DB7042
+ _ZN3paf6thread9ThreadOptC1Ev: 0x5712350E
+ _ZN3paf6thread9ThreadOptC2Ev: 0xCC65DF88
ScePafWidget:
nid: 0x073F8C68
functions: