From fc177ec7c3976d54b24ef480a29b301ef26e7073 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 17 May 2020 17:43:10 +0100 Subject: fill out _OSThread --- arm9/lib/include/OS_thread.h | 62 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) (limited to 'arm9/lib/include/OS_thread.h') diff --git a/arm9/lib/include/OS_thread.h b/arm9/lib/include/OS_thread.h index 15cec0c9..96226c71 100644 --- a/arm9/lib/include/OS_thread.h +++ b/arm9/lib/include/OS_thread.h @@ -5,7 +5,16 @@ #ifndef POKEDIAMOND_OS_THREAD_H #define POKEDIAMOND_OS_THREAD_H +#include "types.h" +#include "OS_context.h" + +typedef struct OSiAlarm OSAlarm; + typedef struct _OSThread OSThread; +typedef struct _OSThreadLink OSThreadLink; +typedef struct _OSMutexQueue OSMutexQueue; +typedef struct _OSMutexLink OSMutexLink; +typedef struct OSMutex OSMutex; struct _OSThreadQueue { @@ -13,7 +22,26 @@ struct _OSThreadQueue OSThread *tail; }; +struct _OSThreadLink +{ + OSThread *prev; + OSThread *next; +}; + +struct _OSMutexQueue +{ + OSMutex *head; + OSMutex *tail; +}; + +struct _OSMutexLink +{ + OSMutex *next; + OSMutex *prev; +}; + typedef struct _OSThreadQueue OSThreadQueue; +typedef struct _OSThreadLink OSThreadLink; typedef struct OSThreadInfo { u16 isNeedRescheduling; @@ -23,9 +51,41 @@ typedef struct OSThreadInfo { void* switchCallback; // type: OSSwitchThreadCallback } OSThreadInfo; +typedef enum { + OS_THREAD_STATE_WAITING = 0, + OS_THREAD_STATE_READY = 1, + OS_THREAD_STATE_TERMINATED = 2 +} OSThreadState; + +typedef void (*OSThreadDestructor) (void *); + struct _OSThread { - u8 padding[0x80]; //todo: not the correct size but idfk + OSContext context; + OSThreadState state; + OSThread *next; + u32 id; + u32 priority; + void *profiler; + + OSThreadQueue *queue; + OSThreadLink link; + + OSMutex *mutex; + OSMutexQueue mutexQueue; + + u32 stackTop; + u32 stackBottom; + u32 stackWarningOffset; + + OSThreadQueue joinQueue; + + void *specific[3]; + OSAlarm *alarmForSleep; + OSThreadDestructor destructor; + void *userParameter; + + u32 systemErrno; }; void OS_SleepThread(OSThreadQueue * queue); -- cgit v1.2.3 From 2ac260c49fa1203c27d96fc792a562460e0b4724 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 17 May 2020 17:58:24 +0100 Subject: remove duplicate typedef --- arm9/lib/include/OS_thread.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'arm9/lib/include/OS_thread.h') diff --git a/arm9/lib/include/OS_thread.h b/arm9/lib/include/OS_thread.h index 96226c71..adcadf2e 100644 --- a/arm9/lib/include/OS_thread.h +++ b/arm9/lib/include/OS_thread.h @@ -11,6 +11,8 @@ typedef struct OSiAlarm OSAlarm; typedef struct _OSThread OSThread; + +typedef struct _OSThreadQueue OSThreadQueue; typedef struct _OSThreadLink OSThreadLink; typedef struct _OSMutexQueue OSMutexQueue; typedef struct _OSMutexLink OSMutexLink; @@ -40,9 +42,6 @@ struct _OSMutexLink OSMutex *prev; }; -typedef struct _OSThreadQueue OSThreadQueue; -typedef struct _OSThreadLink OSThreadLink; - typedef struct OSThreadInfo { u16 isNeedRescheduling; u16 irqDepth; -- cgit v1.2.3