Implement irqmgr

This commit is contained in:
Cuyler36
2023-04-29 08:04:22 -04:00
parent 7581a5c5bd
commit aad0bc2f09
5 changed files with 261 additions and 3 deletions
+1
View File
@@ -5,6 +5,7 @@
#include "types.h"
#include "dolphin/os/OSAlarm.h"
#include "dolphin/os/OSMessage.h"
#ifdef __cplusplus
extern "C" {
+21 -3
View File
@@ -4,6 +4,7 @@
#include "types.h"
#include "dolphin/os/OSTime.h"
#include "dolphin/os/OSTimer.h"
#include "dolphin/os/OSMessage.h"
#ifdef __cplusplus
extern "C" {
@@ -31,16 +32,33 @@ typedef struct {
irqmgr_mesg_t msgDelayPreNMI;
OSMessageQueue _msgQueue;
OSMessage _msgBuf[IRQMGR_MESSAGES_MAX];
OSThread thread;
irqmgr_client_t* clients;
u8 prenmi;
union {
OSThread thread;
struct {
u8 unused[sizeof(OSThread) - 2 * sizeof(void*)];
irqmgr_client_t* clients;
u8 prenmi;
};
};
OSTime prenmi_time;
OSTimer timer;
OSTime retraceTime;
} irqmgr_t;
extern void irqmgr_AddClient(irqmgr_client_t* client, OSMessageQueue* msgqueue);
/* @unused extern void irqmgr_RemoveClient(irqmgr_client_t* client) */
extern void CreateIRQManager(void* stack, size_t stack_size, int priority, u8 retracecount);
/* probably declared in os_vi.h */
extern void osViSetEvent(OSMessageQueue* mesgq, OSMessage msg, u32 retcount);
extern volatile int ResetStatus;
extern volatile OSTime ResetTime;
extern volatile OSTime RetraceTime;
extern volatile int RetraceCount;
extern irqmgr_t irqmgr_class;
#ifdef __cplusplus
};
+18
View File
@@ -0,0 +1,18 @@
#ifndef LIBULTRA_OS_THREAD_H
#define LIBULTRA_OS_THREAD_H
#include "types.h"
#include "dolphin/os/OSThread.h"
#ifdef __cplusplus
extern "C" {
#endif
extern void osCreateThread2(OSThread* t, int id, void(*entry)(void*), void* arg, void* stack_pointer, size_t stack_size, OSPriority priority);
extern void osStartThread(OSThread* t);
#ifdef __cplusplus
}
#endif
#endif