22 #ifndef ULTIMA8_KERNEL_USECODE_PROCESS_H 23 #define ULTIMA8_KERNEL_USECODE_PROCESS_H 25 #include "ultima/ultima8/misc/classtype.h" 26 #include "ultima/ultima8/misc/common_types.h" 27 #include "ultima/ultima8/misc/debugger.h" 42 virtual void run() = 0;
44 Process(ObjId _itemNum = 0, uint16 type = 0);
47 ENABLE_RUNTIME_CLASSTYPE_BASE()
49 uint32 getProcessFlags()
const {
52 bool is_active()
const {
53 return (_flags & PROC_ACTIVE);
55 bool is_terminated()
const {
56 return (_flags & (PROC_TERMINATED |
57 PROC_TERM_DEFERRED)) != 0;
59 bool is_suspended()
const {
60 return (_flags & PROC_SUSPENDED) != 0;
67 virtual void terminate();
71 _flags |= PROC_TERM_DEFERRED;
76 _flags |= PROC_RUNPAUSED;
80 void waitFor(ProcId pid);
89 void wakeUp(uint32 result);
94 void setItemNum(ObjId it) {
97 void setType(uint16 ty) {
100 void setTicksPerRun(uint32 val) {
104 ProcId getPid()
const {
107 ObjId getItemNum()
const {
110 uint16 getType()
const {
113 uint32 getTicksPerRun()
const {
129 bool validateWaiters()
const;
155 PROC_ACTIVE = 0x0001,
156 PROC_SUSPENDED = 0x0002,
157 PROC_TERMINATED = 0x0004,
158 PROC_TERM_DEFERRED = 0x0008,
159 PROC_FAILED = 0x0010,
160 PROC_RUNPAUSED = 0x0020,
161 PROC_TERM_DISPOSE = 0x0040,
162 PROC_PREVENT_SAVE = 0x0080
uint32 _ticksPerRun
Definition: process.h:139
processflags
Definition: process.h:154
ProcId _pid
process id
Definition: process.h:133
uint32 _result
process result
Definition: process.h:146
Definition: detection.h:27
void setRunPaused()
run even when paused
Definition: process.h:75
Common::Array< ProcId > _waiting
Definition: process.h:150
Definition: algorithm.h:29
void terminateDeferred()
terminate next frame
Definition: process.h:70
Definition: debugger.h:33
ObjId _itemNum
item we are assigned to
Definition: process.h:142
virtual void onWakeUp()
A hook to add aditional behavior on wakeup, before anything else happens.
Definition: process.h:92