home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / bbs / cbm / nduk-v39.lha / V39 / include / exec / tasks.i < prev    next >
Text File  |  1992-09-24  |  4KB  |  130 lines

  1.     IFND    EXEC_TASKS_I
  2. EXEC_TASKS_I    SET    1
  3. **
  4. **    $VER: tasks.i 39.1 (18.09.92)
  5. **    Includes Release 39.108
  6. **
  7. **    Task Control Block, Signals, and Task flags.
  8. **
  9. **    (C) Copyright 1985-1992 Commodore-Amiga, Inc.
  10. **        All Rights Reserved
  11. **
  12.  
  13.     IFND EXEC_NODES_I
  14.     INCLUDE "exec/nodes.i"
  15.     ENDC    ; EXEC_NODES_I
  16.  
  17.     IFND EXEC_LISTS_I
  18.     INCLUDE "exec/lists.i"
  19.     ENDC    ; EXEC_LISTS_I
  20.  
  21.     IFND EXEC_PORTS_I
  22.     INCLUDE "exec/ports.i"
  23.     ENDC    ; EXEC_PORTS_I
  24.  
  25.  
  26. *----------------------------------------------------------------
  27. *
  28. *    Task Control Structure
  29. *
  30. *    Please use Exec functions to modify task structure fields,
  31. *    where available.
  32. *
  33. *----------------------------------------------------------------
  34.  
  35.  STRUCTURE  TC_Struct,LN_SIZE        ; was "TC"
  36.     UBYTE   TC_FLAGS
  37.     UBYTE   TC_STATE
  38.     BYTE    TC_IDNESTCNT        ; intr disabled nesting
  39.     BYTE    TC_TDNESTCNT        ; task disabled nesting
  40.     ULONG   TC_SIGALLOC        ; sigs allocated
  41.     ULONG   TC_SIGWAIT            ; sigs we are waiting for
  42.     ULONG   TC_SIGRECVD        ; sigs we have received
  43.     ULONG   TC_SIGEXCEPT        ; sigs we take as exceptions
  44.     ;* Pointer to an extended task structure.  This structure is allocated
  45.     ;* by V36 Exec if the proper flags in tc_ETaskFlags are set.  This
  46.     ;* field was formerly defined as:
  47.     ;*        UWORD    TC_TRAPALLOC        ; traps allocated
  48.     ;*        UWORD    TC_TRAPABLE        ; traps enabled
  49.     ;* Please see the Exec AllocTrap() and FreeTrap() calls.
  50.     ;*
  51.     APTR    tc_ETask            ; pointer to extended task structure
  52.     APTR    TC_EXCEPTDATA        ; data for except proc
  53.     APTR    TC_EXCEPTCODE        ; exception procedure
  54.     APTR    TC_TRAPDATA        ; data for proc trap proc
  55.     APTR    TC_TRAPCODE        ; proc trap procedure
  56.     APTR    TC_SPREG            ; stack pointer
  57.     APTR    TC_SPLOWER            ; stack lower bound
  58.     APTR    TC_SPUPPER            ; stack upper bound + 2
  59.     FPTR    TC_SWITCH            ; task losing CPU (function pointer)
  60.     FPTR    TC_LAUNCH            ; task getting CPU (function pointer)
  61.     STRUCT  TC_MEMENTRY,LH_SIZE     ; Allocated memory list.  Freed by RemTask()
  62.     APTR    TC_Userdata            ; For use by the task; no restrictions!
  63.     LABEL   TC_SIZE
  64.  
  65.  
  66. ;Don't even _think_ about allocating one of these yourself.
  67.  STRUCTURE    ETask,MN_SIZE
  68.         APTR    et_Parent        ;Pointer to task (TC)
  69.         ULONG    et_UniqueID        ;ID unique to this task
  70.         STRUCT    et_Children,MLH_SIZE    ;List of children
  71.         UWORD    et_TRAPALLOC
  72.         UWORD    et_TRAPABLE
  73.         ULONG    et_Result1        ;First result
  74.         APTR    et_Result2        ;Result data pointer (AllocVec)
  75.         STRUCT    et_TaskMsgPort,MP_SIZE
  76.         LABEL    ETask_SIZEOF    ;_never_ depend on this size!
  77.  
  78.  
  79. CHILD_NOTNEW    EQU    1    ;function not called from a new style task
  80. CHILD_NOTFOUND    EQU    2    ;child not found
  81. CHILD_EXITED    EQU    3    ;child has exited
  82. CHILD_ACTIVE    EQU    4    ;child has exited
  83.  
  84.  
  85. ;Stack swap structure as passed to StackSwap()
  86. ;
  87.  STRUCTURE    StackSwapStruct,0
  88.         APTR    stk_Lower    ;Lowest byte of stack
  89.         ULONG    stk_Upper    ;Upper end of stack (size + Lowest)
  90.         APTR    stk_Pointer    ;Stack pointer at switch point
  91.         LABEL    StackSwapStruct_SIZEOF
  92.  
  93.  
  94. ;------ TC_FLAGS Bits:
  95.  
  96.     BITDEF  T,PROCTIME,0
  97.     BITDEF  T,ETASK,3
  98.     BITDEF  T,STACKCHK,4
  99.     BITDEF  T,EXCEPT,5
  100.     BITDEF  T,SWITCH,6        ;Enable TC_SWITCH point
  101.     BITDEF  T,LAUNCH,7        ;Enable TC_LAUNCH point
  102.  
  103.  
  104. ;------ Task States:
  105.  
  106. TS_INVALID  EQU     0
  107. TS_ADDED    EQU     TS_INVALID+1
  108. TS_RUN        EQU     TS_ADDED+1
  109. TS_READY    EQU     TS_RUN+1
  110. TS_WAIT     EQU     TS_READY+1
  111. TS_EXCEPT   EQU     TS_WAIT+1
  112. TS_REMOVED  EQU     TS_EXCEPT+1
  113.  
  114.  
  115. ;------ System Task Signals:
  116.  
  117.     BITDEF    SIG,ABORT,0
  118.     BITDEF    SIG,CHILD,1
  119.     BITDEF    SIG,BLIT,4    ; Note: same as SINGLE
  120.     BITDEF    SIG,SINGLE,4    ; "single-threaded".  Note: same as BLIT
  121.     BITDEF    SIG,INTUITION,5
  122.     BITDEF    SIG,NET,7
  123.     BITDEF    SIG,DOS,8
  124.  
  125.  
  126. SYS_SIGALLOC    EQU    $0FFFF        ; pre-allocated signals
  127. SYS_TRAPALLOC    EQU    $08000        ; pre-allocated traps
  128.  
  129.     ENDC    ; EXEC_TASKS_I
  130.