131 lines
3.8 KiB
OpenEdge ABL
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
|