summaryrefslogtreecommitdiff
path: root/include/f_pc/f_pc_priority.h
blob: d3c9d750762116cc1c878ff52b4ba4e4f81b0c04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

#ifndef F_PC_PRIORITY_H_
#define F_PC_PRIORITY_H_

#include "f_pc/f_pc_method_tag.h"

enum {
    fpcPi_CURRENT_e = 0xFFFD,
    fpcPi_SPECIAL_e = 0xFFFE,
    fpcPi_NONE_e = 0xFFFF,
};

typedef struct priority_id {
    /* 0x0 */ unsigned int layer_id;
    /* 0x4 */ u16 list_id;
    /* 0x6 */ u16 list_priority;
} priority_id;

typedef struct process_priority_class {
    /* 0x00 */ create_tag_class base;
    /* 0x14 */ process_method_tag_class method_tag;
    /* 0x30 */ priority_id queue_info;
    /* 0x38 */ priority_id current_info;
} process_priority_class;

int fpcPi_IsInQueue(process_priority_class* pPi);
int fpcPi_QueueTo(process_priority_class* pPi);
int fpcPi_ToQueue(process_priority_class* pPi);
process_priority_class* fpcPi_GetFromQueue(void);
int fpcPi_Delete(process_priority_class* pPi);
int fpcPi_IsNormal(unsigned int layer, u16 listID, u16 priority);
int fpcPi_Change(process_priority_class* pPi, unsigned int layer, u16 listID, u16 priority);
int fpcPi_Handler(void);
int fpcPi_Init(process_priority_class* pPi, void* pUserData, unsigned int layer, u16 listID,
               u16 priority);

#endif