home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / DC-POS24.LZX / pOS / IncPOS.lzx / pExec / Task.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-18  |  3.3 KB  |  110 lines

  1. #ifndef __INC_POS_PEXEC_TASK_H
  2. #define __INC_POS_PEXEC_TASK_H
  3. /*******************************************************************
  4.  Includes Release 24
  5.  (C) Copyright 1995-1997 proDAD
  6.      All Rights Reserved
  7.  
  8.  $AUT Holger Burkarth
  9.  $DAT >>Task.h<<   13 Feb 1997    09:53:18 - (C) ProDAD
  10. *******************************************************************/
  11. #ifndef __INC_POS_PEXEC_NODE_H
  12. #include <pExec/Node.h>
  13. #endif
  14.  
  15.  
  16. /*----------------------------------
  17. -----------------------------------*/
  18. struct pOS_Task
  19. {
  20.   struct pOS_ExNode tc_Node;
  21.   UBYTE             tc_Flags;
  22.   UBYTE             tc_State;          /* (enum pOS_TaskStates) */
  23.   SBYTE             tc_IDNestCnt;      /* intr disabled nesting*/
  24.   SBYTE             tc_TDNestCnt;      /* task disabled nesting*/
  25.   ULONG             tc_SigAlloc;       /* sigs allocated */
  26.   ULONG             tc_SigWait;        /* sigs we are waiting for */
  27.   ULONG             tc_SigRecvd;       /* sigs we have received */
  28.   ULONG             tc_SigExcept;      /* sigs we will take excepts for */
  29.   UWORD             tc_TrapAlloc;      /* traps allocated */
  30.   UWORD             tc_TrapAble;       /* traps enabled */
  31.   APTR              tc_ExceptData;     /* points to except data */
  32.   APTR              tc_ExceptCode;     /* points to except code */
  33.   APTR              tc_TrapData;       /* points to trap data */
  34.   APTR              tc_TrapCode;       /* points to trap code */
  35.   APTR              tc_SPReg;          /* stack pointer        */
  36.   APTR              tc_SPLower;        /* stack lower bound    */
  37.   APTR              tc_SPUpper;        /* stack upper bound + 2*/
  38.   VOID            (*tc_Switch)(VOID);  /* task losing CPU    */
  39.   VOID            (*tc_Launch)(VOID);  /* task getting CPU  */
  40.   struct pOS_ExList tc_MemEntry;       /* Allocated memory. Freed by RemTask() */
  41.   UWORD             tc_NestSemCnt;     /* Semaphore nesting */
  42.   SBYTE             tc_SysTcPri;
  43.   UBYTE             tc_Pad;
  44.   UBYTE tc_Reserved[20];
  45.  
  46.   struct pOS_TaskInfo    *tc_Info;
  47.   struct pOS_TaskControl *tc_Control;
  48.   struct pOS_Task        *tc_FriendTask;  /* For friend talk (will be set in pOS_CreateTask() */
  49.   ULONG                   tc_UserData[2]; /* For use by the task; no restrictions! */
  50. };
  51.  
  52.  
  53.  
  54. enum pOS_TaskStates
  55. {
  56.   TKSTA_INVALID=0,
  57.   TKSTA_ADDED,
  58.   TKSTA_RUN,
  59.   TKSTA_READY,
  60.   TKSTA_WAIT,
  61.   TKSTA_EXCEPT,
  62.   TKSTA_REMOVED,
  63. };
  64.  
  65.  
  66. enum pOS_TaskSignal
  67. {
  68.   SIGB_AllocAny=-1,  /* pOS_AllocSignal(,SIGB_AllocAny) => nächstes freies Signal */
  69.   SIGB_NoSignal=-1,  /* return from pOS_AllocSignal() => kein freies Signal gefunden */
  70.  
  71.   SIGB_Semaphore = 4,
  72.   SIGB_Internal  = 4, /** Achtung: wie Semaphore **/
  73.   SIGB_Signal    = 5,
  74.   SIGB_Dos       = 8,
  75.  
  76.   SIGF_Semaphore = 0x0010,
  77.   SIGF_Internal  = 0x0010,
  78.   SIGF_Signal    = 0x0020, /* Public-User - Signal, system do not use this */
  79.   SIGF_Dos       = 0x0100,
  80. };
  81.  
  82.  
  83.  
  84.  
  85. /*----------------------------------
  86. -----------------------------------*/
  87. struct pOS_StackSwapData
  88. {
  89.   APTR  stk_Lower;    /* Lowest byte of stack */
  90.   APTR  stk_Upper;    /* Upper end of stack (size + Lowest) */
  91.   APTR  stk_Pointer;  /* Stack pointer at switch point */
  92. };
  93.  
  94.  
  95.  
  96. /** pOS_SetTaskXPri() **/
  97. enum pOS_SetTaskXPriMode
  98. {
  99.   TKXPDMD_None          = 0x0000,
  100.   TKXPDMD_UseSPri       = 0x0001,       /* SysPri setzen */
  101.   TKXPDMD_IgnoreSPri    = 0x0000,
  102.  
  103.   TKXPDMD_NoSem         = 0x0080,       /* Speziallfall nur intern */
  104. };
  105.  
  106.  
  107.  
  108.  
  109. #endif
  110.