home *** CD-ROM | disk | FTP | other *** search
- #ifndef __INC_POS_PEXEC_TASK_H
- #define __INC_POS_PEXEC_TASK_H
- /*******************************************************************
- Includes Release 24
- (C) Copyright 1995-1997 proDAD
- All Rights Reserved
-
- $AUT Holger Burkarth
- $DAT >>Task.h<< 13 Feb 1997 09:53:18 - (C) ProDAD
- *******************************************************************/
- #ifndef __INC_POS_PEXEC_NODE_H
- #include <pExec/Node.h>
- #endif
-
-
- /*----------------------------------
- -----------------------------------*/
- struct pOS_Task
- {
- struct pOS_ExNode tc_Node;
- UBYTE tc_Flags;
- UBYTE tc_State; /* (enum pOS_TaskStates) */
- SBYTE tc_IDNestCnt; /* intr disabled nesting*/
- SBYTE 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 will take excepts for */
- UWORD tc_TrapAlloc; /* traps allocated */
- UWORD tc_TrapAble; /* traps enabled */
- APTR tc_ExceptData; /* points to except data */
- APTR tc_ExceptCode; /* points to except code */
- APTR tc_TrapData; /* points to trap data */
- APTR tc_TrapCode; /* points to trap code */
- APTR tc_SPReg; /* stack pointer */
- APTR tc_SPLower; /* stack lower bound */
- APTR tc_SPUpper; /* stack upper bound + 2*/
- VOID (*tc_Switch)(VOID); /* task losing CPU */
- VOID (*tc_Launch)(VOID); /* task getting CPU */
- struct pOS_ExList tc_MemEntry; /* Allocated memory. Freed by RemTask() */
- UWORD tc_NestSemCnt; /* Semaphore nesting */
- SBYTE tc_SysTcPri;
- UBYTE tc_Pad;
- UBYTE tc_Reserved[20];
-
- struct pOS_TaskInfo *tc_Info;
- struct pOS_TaskControl *tc_Control;
- struct pOS_Task *tc_FriendTask; /* For friend talk (will be set in pOS_CreateTask() */
- ULONG tc_UserData[2]; /* For use by the task; no restrictions! */
- };
-
-
-
- enum pOS_TaskStates
- {
- TKSTA_INVALID=0,
- TKSTA_ADDED,
- TKSTA_RUN,
- TKSTA_READY,
- TKSTA_WAIT,
- TKSTA_EXCEPT,
- TKSTA_REMOVED,
- };
-
-
- enum pOS_TaskSignal
- {
- SIGB_AllocAny=-1, /* pOS_AllocSignal(,SIGB_AllocAny) => nächstes freies Signal */
- SIGB_NoSignal=-1, /* return from pOS_AllocSignal() => kein freies Signal gefunden */
-
- SIGB_Semaphore = 4,
- SIGB_Internal = 4, /** Achtung: wie Semaphore **/
- SIGB_Signal = 5,
- SIGB_Dos = 8,
-
- SIGF_Semaphore = 0x0010,
- SIGF_Internal = 0x0010,
- SIGF_Signal = 0x0020, /* Public-User - Signal, system do not use this */
- SIGF_Dos = 0x0100,
- };
-
-
-
-
- /*----------------------------------
- -----------------------------------*/
- struct pOS_StackSwapData
- {
- APTR stk_Lower; /* Lowest byte of stack */
- APTR stk_Upper; /* Upper end of stack (size + Lowest) */
- APTR stk_Pointer; /* Stack pointer at switch point */
- };
-
-
-
- /** pOS_SetTaskXPri() **/
- enum pOS_SetTaskXPriMode
- {
- TKXPDMD_None = 0x0000,
- TKXPDMD_UseSPri = 0x0001, /* SysPri setzen */
- TKXPDMD_IgnoreSPri = 0x0000,
-
- TKXPDMD_NoSem = 0x0080, /* Speziallfall nur intern */
- };
-
-
-
-
- #endif
-