Every Amiga Task has one of these Task structures associated with it. To find yours, use FindTask(nil). Aros processes tack a few more values on to the end of this structure, which is the difference between Tasks and Processes.
Source position: exec.pas line 654
type TTask = record |
||
tc_Node: TNode; |
|
Node for connecting several tasks. |
tc_Flags: Byte; |
|
Task flags (TF_*) |
tc_State: Byte; |
|
Task status (TS_*) |
tc_IDNestCnt: ShortInt; |
|
Number of suppressed Interrupts |
tc_TDNestCnt: ShortInt; |
|
Number of suppressed Tasks |
tc_SigAlloc: LongWord; |
|
Signals reserved for this Task |
tc_SigWait: LongWord; |
|
Signals, the task wait for. |
tc_SigRecvd: LongWord; |
|
Signals, the task recieved |
tc_SigExcept: LongWord; |
|
Signals, which fires Exceptions |
case Boolean of |
||
True: ( |
||
tc_TrapAlloc: Word; |
|
Traps, reserved for this task |
tc_TrapAble: Word; |
|
Traps, allowed for this task |
); |
||
False: ( |
||
tc_ETask: Pointer; |
|
|
tc_ExceptData: Pointer; |
|
Pointer to exception data. |
tc_ExceptCode: Pointer; |
|
Pointer to exception code |
tc_TrapData: Pointer; |
|
Pointer to trap data. |
tc_TrapCode: Pointer; |
|
Pointer to trap code |
tc_SPReg: Pointer; |
|
Pointer to Stack of Task |
tc_SPLower: Pointer; |
|
Lower border of stack. |
tc_SPUpper: Pointer; |
|
Upper border of stack + 2 |
tc_Switch: Pointer; |
|
Pointer to switch code (remove task from CPU) |
tc_Launch: Pointer; |
|
Pointer to switch code (put task to CPU) |
tc_MemEntry: TList; |
|
Pointer to memory the task uses. |
tc_UserData: Pointer; |
|
Pointer for userdata. |
); |
||
end; |
|
Find task by name get own task |
|
|
Add a Task to the System |
|
|
Remove a task from the system |
|
|
Get and set the priority of a task |
|
|
Signal a task |