	IFND	EXEC_TASKS_I
EXEC_TASKS_I	EQU	1
**
**	$Filename: exec/tasks.i $
**	$Release: 1.3 $
**
**	
**
**	(C) Copyright 1985,1986,1987,1988 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


*----------------------------------------------------------------
*
*   Task Control Structure
*
*----------------------------------------------------------------

	STRUCTURE	TaskControl,LN_SIZE
	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
	UWORD	TC_TRAPALLOC	    * traps allocated
	UWORD	TC_TRAPABLE		    * traps enabled
	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
	APTR	TC_SWITCH		    * task losing CPU
	APTR	TC_LAUNCH		    * task getting CPU
	STRUCT	TC_MEMENTRY,LH_SIZE	    * allocated memory
	APTR	TC_Userdata
	LABEL	TC_SIZE


*------ Flag Bits:

	BITDEF	T,PROCTIME,0
	BITDEF	T,STACKCHK,4
	BITDEF	T,EXCEPT,5
	BITDEF	T,SWITCH,6
	BITDEF	T,LAUNCH,7


*------ 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:

SIGF_ABORT	EQU	$0001
SIGF_CHILD	EQU	$0002
SIGF_BLIT	EQU	$0010
SIGF_SINGLE	EQU	$0010
SIGF_DOS	EQU	$0100

SIGB_ABORT	EQU	0
SIGB_CHILD	EQU	1
SIGB_BLIT	EQU	4
SIGB_SINGLE	EQU	4
SIGB_DOS	EQU	8


SYS_SIGALLOC	EQU	$0FFFF		; pre-allocated signals
SYS_TRAPALLOC	EQU	$08000		; pre-allocated traps

	ENDC	; EXEC_TASKS_I
