home *** CD-ROM | disk | FTP | other *** search
- 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
-