Hamazing/source/includes/exec/tasks.i
2023-05-22 18:29:18 +02:00

131 lines
3.8 KiB
OpenEdge ABL

IFND EXEC_TASKS_I
EXEC_TASKS_I SET 1
**
** $Filename: exec/tasks.i $
** $Release: 2.04 Includes, V37.4 $
** $Revision: 36.8 $
** $Date: 90/10/22 $
**
** Task Control Block, Signals, and Task flags.
**
** (C) Copyright 1985-1991 Commodore-Amiga, Inc.
** All Rights Reserved
**
IFND EXEC_NODES_I
INCLUDE "exec/nodes.i"
ENDC ; EXEC_NODES_I
IFND EXEC_LISTS_I
INCLUDE "exec/lists.i"
ENDC ; EXEC_LISTS_I
IFND EXEC_PORTS_I
INCLUDE "exec/ports.i"
ENDC ; EXEC_PORTS_I
*----------------------------------------------------------------
*
* Task Control Structure
*
* Please use Exec functions to modify task structure fields,
* where available.
*
*----------------------------------------------------------------
STRUCTURE TC_Struct,LN_SIZE ; was "TC"
UBYTE TC_FLAGS
UBYTE TC_STATE
BYTE TC_IDNESTCNT ; intr disabled nesting
BYTE TC_TDNESTCNT ; task disabled nesting
ULONG TC_SIGALLOC ; sigs allocated
ULONG TC_SIGWAIT ; sigs we are waiting for
ULONG TC_SIGRECVD ; sigs we have received
ULONG TC_SIGEXCEPT ; sigs we take as exceptions
;* Pointer to an extended task structure. This structure is allocated
;* by V36 Exec if the proper flags in tc_ETaskFlags are set. This
;* field was formerly defined as:
;* UWORD TC_TRAPALLOC ; traps allocated
;* UWORD TC_TRAPABLE ; traps enabled
;* Please see the Exec AllocTrap() and FreeTrap() calls.
;*
APTR tc_ETask ; pointer to extended task structure
APTR TC_EXCEPTDATA ; data for except proc
APTR TC_EXCEPTCODE ; exception procedure
APTR TC_TRAPDATA ; data for proc trap proc
APTR TC_TRAPCODE ; proc trap procedure
APTR TC_SPREG ; stack pointer
APTR TC_SPLOWER ; stack lower bound
APTR TC_SPUPPER ; stack upper bound + 2
FPTR TC_SWITCH ; task losing CPU (function pointer)
FPTR TC_LAUNCH ; task getting CPU (function pointer)
STRUCT TC_MEMENTRY,LH_SIZE ; Allocated memory list. Freed by RemTask()
APTR TC_Userdata ; For use by the task; no restrictions!
LABEL TC_SIZE
;Don't even _think_ about allocating one of these yourself.
STRUCTURE ETask,MN_SIZE
APTR et_Parent ;Pointer to task (TC)
ULONG et_UniqueID ;ID unique to this task
STRUCT et_Children,MLH_SIZE ;List of children
UWORD et_TRAPALLOC
UWORD et_TRAPABLE
ULONG et_Result1 ;First result
APTR et_Result2 ;Result data pointer (AllocVec)
STRUCT et_TaskMsgPort,MP_SIZE
LABEL ETask_SIZEOF ;_never_ depend on this size!
CHILD_NOTNEW EQU 1 ;function not called from a new style task
CHILD_NOTFOUND EQU 2 ;child not found
CHILD_EXITED EQU 3 ;child has exited
CHILD_ACTIVE EQU 4 ;child has exited
;Stack swap structure as passed to StackSwap()
;
STRUCTURE StackSwapStruct,0
APTR stk_Lower ;Lowest byte of stack
ULONG stk_Upper ;Upper end of stack (size + Lowest)
APTR stk_Pointer ;Stack pointer at switch point
LABEL StackSwapStruct_SIZEOF
;------ TC_FLAGS Bits:
BITDEF T,PROCTIME,0
BITDEF T,ETASK,3
BITDEF T,STACKCHK,4
BITDEF T,EXCEPT,5
BITDEF T,SWITCH,6 ;Enable TC_SWITCH point
BITDEF T,LAUNCH,7 ;Enable TC_LAUNCH point
;------ Task States:
TS_INVALID EQU 0
TS_ADDED EQU TS_INVALID+1
TS_RUN EQU TS_ADDED+1
TS_READY EQU TS_RUN+1
TS_WAIT EQU TS_READY+1
TS_EXCEPT EQU TS_WAIT+1
TS_REMOVED EQU TS_EXCEPT+1
;------ System Task Signals:
BITDEF SIG,ABORT,0
BITDEF SIG,CHILD,1
BITDEF SIG,BLIT,4 ; Note: same as SINGLE
BITDEF SIG,SINGLE,4 ; "single-threaded". Note: same as BLIT
BITDEF SIG,INTUITION,5
BITDEF SIG,DOS,8
SYS_SIGALLOC EQU $0FFFF ; pre-allocated signals
SYS_TRAPALLOC EQU $08000 ; pre-allocated traps
ENDC ; EXEC_TASKS_I