diff options
Diffstat (limited to 'arm9/lib/include')
-rw-r--r-- | arm9/lib/include/OS_interrupt.h | 9 | ||||
-rw-r--r-- | arm9/lib/include/OS_thread.h | 117 | ||||
-rw-r--r-- | arm9/lib/include/registers.h | 10 |
3 files changed, 8 insertions, 128 deletions
diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h index 481e6c6c..a828c62e 100644 --- a/arm9/lib/include/OS_interrupt.h +++ b/arm9/lib/include/OS_interrupt.h @@ -6,15 +6,6 @@ #define OS_IE_TIMER0 (1UL << REG_OS_IE_T0_SHIFT) -typedef void (*OSIrqFunction) (void); - -typedef struct -{ - void (*func) (void *); - u32 enable; - void* arg; -} OSIrqCallbackInfo; - extern OSIrqFunction OS_IRQTable[]; extern OSIrqCallbackInfo OSi_IrqCallbackInfo[8]; diff --git a/arm9/lib/include/OS_thread.h b/arm9/lib/include/OS_thread.h index a80a3b96..8afc0b78 100644 --- a/arm9/lib/include/OS_thread.h +++ b/arm9/lib/include/OS_thread.h @@ -1,89 +1,9 @@ -#ifndef POKEDIAMOND_OS_THREAD_H -#define POKEDIAMOND_OS_THREAD_H +#ifndef POKEDIAMOND_ARM9_OS_THREAD_H +#define POKEDIAMOND_ARM9_OS_THREAD_H #include "nitro/types.h" #include "OS_context.h" - -typedef struct OSiAlarm OSAlarm; - -typedef struct _OSThread OSThread; - -typedef struct _OSThreadQueue OSThreadQueue; -typedef struct _OSThreadLink OSThreadLink; -typedef struct _OSMutexQueue OSMutexQueue; -typedef struct _OSMutexLink OSMutexLink; -typedef struct OSMutex OSMutex; - -struct _OSThreadQueue -{ - OSThread *head; - OSThread *tail; -}; - -struct _OSThreadLink -{ - OSThread *prev; - OSThread *next; -}; - -struct _OSMutexQueue -{ - OSMutex *head; - OSMutex *tail; -}; - -struct _OSMutexLink -{ - OSMutex *next; - OSMutex *prev; -}; - -typedef struct OSThreadInfo { - u16 isNeedRescheduling; - u16 irqDepth; - OSThread* current; - OSThread* list; - 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 (*OSSwitchThreadCallback) (OSThread *from, OSThread *to); - -typedef void (*OSThreadDestructor) (void *); - -struct _OSThread -{ - 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; -}; +#include "nitro/OS_thread_shared.h" static s32 OSi_GetUnusedThreadId(void); static void OSi_InsertLinkToQueue(OSThreadQueue *queue, OSThread *thread); @@ -119,33 +39,4 @@ u32 OS_DisableScheduler(void); u32 OS_EnableScheduler(void); void OS_SetThreadDestructor(OSThread *thread, OSThreadDestructor dtor); -extern OSThreadInfo OSi_ThreadInfo; - -static inline OSThreadInfo *OS_GetThreadInfo(void) -{ - return &OSi_ThreadInfo; -} - -static inline BOOL OS_IsThreadRunnable(const OSThread *thread) -{ - return thread->state == OS_THREAD_STATE_READY; -} - -static inline void OS_InitThreadQueue(OSThreadQueue * queue) -{ - queue->head = queue->tail = NULL; -} - -static inline OSThread *OS_GetCurrentThread(void) -{ - return OS_GetThreadInfo()->current; -} - -static inline void OS_SetCurrentThread(OSThread *thread) -{ - OS_GetThreadInfo()->current = thread; -} - -#define OSi_GetCurrentThread() (*OSi_CurrentThreadPtr) - -#endif //POKEDIAMOND_OS_THREAD_H +#endif //POKEDIAMOND_ARM9_OS_THREAD_H diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h index 06f96d5a..a5355322 100644 --- a/arm9/lib/include/registers.h +++ b/arm9/lib/include/registers.h @@ -1,7 +1,8 @@ -#ifndef POKEDIAMOND_REGISTERS_H -#define POKEDIAMOND_REGISTERS_H +#ifndef POKEDIAMOND_ARM9_REGISTERS_H +#define POKEDIAMOND_ARM9_REGISTERS_H #include "nitro/types.h" +#include "nitro/registers_shared.h" #define reg_GX_DISPCNT (*(REGType32v *)0x4000000) #define reg_GX_DISPSTAT (*(REGType16v *)0x4000004) @@ -103,9 +104,6 @@ #define reg_MI_MCCMD1 (*(REGType32v *)0x40001ac) #define reg_MI_EXMEMCNT (*(REGType16v *)0x4000204) -#define reg_OS_IME (*(REGType16v *)0x4000208) -#define reg_OS_IE (*(REGType32v *)0x4000210) -#define reg_OS_IF (*(REGType32v *)0x4000214) #define reg_OS_PAUSE (*(REGType16v *)0x4000300) #define reg_GX_VRAMCNT (*(REGType32v *)0x4000240) @@ -482,4 +480,4 @@ ((u32)(a) << REG_PAD_KEYCNT_A_SHIFT)) #endif -#endif //POKEDIAMOND_REGISTERS_H +#endif //POKEDIAMOND_ARM9_REGISTERS_H |