#ifndef EXEC_TASKS_H
#define EXEC_TASKS_H

/*******************************************************************
 pOS / Amiga adapt
*******************************************************************/

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef __INC_POS_PEXEC_TASK_H
#include <pExec/Task.h>
#endif
#ifndef EXEC_NODES_H
#include <exec/nodes.h>
#endif
#ifndef EXEC_LISTS_H
#include <exec/lists.h>
#endif


struct Task
{
  struct Node tc_Node;
  UBYTE       tc_Flags;
  UBYTE       tc_State;
  SBYTE       tc_IDNestCnt;
  SBYTE       tc_TDNestCnt;
  ULONG       tc_SigAlloc;
  ULONG       tc_SigWait;
  ULONG       tc_SigRecvd;
  ULONG       tc_SigExcept;
  UWORD       tc_TrapAlloc;
  UWORD       tc_TrapAble;
  APTR        tc_ExceptData;
  APTR        tc_ExceptCode;
  APTR        tc_TrapData;
  APTR        tc_TrapCode;
  APTR        tc_SPReg;
  APTR        tc_SPLower;
  APTR        tc_SPUpper;
  VOID        (*tc_Switch)();
  VOID        (*tc_Launch)();
  struct List tc_MemEntry;
  UWORD       tc_NestSemCnt;
  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;
  ULONG                   tc_UserData[2];
};





#define TS_INVALID      TKSTA_INVALID
#define TS_ADDED        TKSTA_ADDED
#define TS_RUN          TKSTA_RUN
#define TS_READY        TKSTA_READY
#define TS_WAIT         TKSTA_WAIT
#define TS_EXCEPT       TKSTA_EXCEPT
#define TS_REMOVED      TKSTA_REMOVED


#define SIGB_SINGLE     SIGB_Internal
#define SIGB_DOS        SIGB_Dos

#define SIGF_SINGLE     SIGF_Internal
#define SIGF_DOS        SIGF_Dos










#ifdef __IGNORE_NOT_SUPPORTED__

 #define SIGB_ABORT      0
 #define SIGB_CHILD      0
 #define SIGB_BLIT       0
 #define SIGB_INTUITION  0
 #define SIGB_NET        0
 #define SIGF_ABORT      0
 #define SIGF_CHILD      0
 #define SIGF_BLIT       0
 #define SIGF_INTUITION  0
 #define SIGF_NET        0

 #define TB_PROCTIME     0
 #define TB_ETASK        0
 #define TB_STACKCHK     0
 #define TB_EXCEPT       0
 #define TB_SWITCH       0
 #define TB_LAUNCH       0
 #define TF_PROCTIME     0
 #define TF_ETASK        0
 #define TF_STACKCHK     0
 #define TF_EXCEPT       0
 #define TF_SWITCH       0
 #define TF_LAUNCH       0

#endif /** __IGNORE_NOT_SUPPORTED__ **/







#endif  /* EXEC_TASKS_H */
