mirror of
https://github.com/pret/pokeheartgold.git
synced 2026-03-22 01:36:12 -05:00
41 lines
1.0 KiB
C
41 lines
1.0 KiB
C
#ifndef POKEHEARTGOLD_SYS_TASK_H
|
|
#define POKEHEARTGOLD_SYS_TASK_H
|
|
|
|
#include "global.h"
|
|
|
|
typedef struct SysTask SysTask;
|
|
typedef struct SysTaskQueue SysTaskQueue;
|
|
typedef void (*SysTaskFunc)(SysTask *task, void *data);
|
|
|
|
struct SysTask {
|
|
SysTaskQueue *queue;
|
|
SysTask *prev;
|
|
SysTask *next;
|
|
u32 priority;
|
|
void *data;
|
|
SysTaskFunc func;
|
|
u32 runNow;
|
|
};
|
|
|
|
struct SysTaskQueue {
|
|
u16 limit;
|
|
u16 activeCount;
|
|
SysTask headSentinel;
|
|
SysTask **taskStack;
|
|
SysTask *taskList;
|
|
BOOL isInsertingTask;
|
|
SysTask *runningTask;
|
|
SysTask *nextTask;
|
|
};
|
|
|
|
void SysTaskQueue_RunTasks(SysTaskQueue *a0);
|
|
u32 SysTaskQueue_GetArenaSize(u32 num);
|
|
SysTaskQueue *SysTaskQueue_PlacementNew(u32 num, void *p_mem);
|
|
void *SysTask_GetData(SysTask *task);
|
|
SysTask *SysTaskQueue_InsertTask(SysTaskQueue *queue, SysTaskFunc func, void *arg, u32 priority);
|
|
void SysTask_SetFunc(SysTask *task, SysTaskFunc func);
|
|
BOOL SysTask_Unlink(SysTask *task);
|
|
u32 SysTask_GetPriority(SysTask *task);
|
|
|
|
#endif // POKEHEARTGOLD_SYS_TASK_H
|