GDSX (Extended General Device Support) Manual
DCCBDECS and ULHDECSE Listings
Extended General Device Support (GDSX) Manual—529931-001
C-6
DCCBDECS Listing
 Monitor^Task^Type     = 32,
 Listener^Task^Type     = 33,
 Createbackup^Task^Type   = 34,
 Downcpu^Task^Type     = 35,
 Netmon^Task^Type     = 36,
 Open^Task^Type      = 37,
 Procdel^Task^Type     = 38,
 Proccreate^Task^Type    = 39;
Literal
 Perm^State        = %000100,
 Assoc^State        = %000200,
 Nomsg^State        = %010000,
 Stopped^State       = %020000;
!------------------------------------------------------------------------------!
!   For each outstanding nowait I/O, an IOCB is allocated. The IOCBs   !
!   relating to a given file are linked to the file's FCB. The head of  !
!   this list is FCB.IOCBH; IOCBs in the list are linked via      !
!  IOCB.FCBLINK.  This list is maintained so that we can clean up   !
!  the IOCBs for a file if the file is closed with I/Os outstanding.   !
!  Similarly, all IOCBs representing I/O operations for a particular  !
!   task are linked to the task's TCB. The head of this list is    !
!  TCB.IOCBH. This list is kept so that we may cancel all I/O    !
!  initiated by a task when we stop the task. Without doing this, we  !
!  might have a READ operation complete into a buffer that was no    !
!  longer allocated or which had been reallocated to another task.   !
!  When initiating nowait I/Os, we pass the address of the associated  !
!   IOCB as the TAG parameter. In this way, when the I/O completes, we  !
!  can easily identify the task which initiated it. Note that the   !
!  user may still specify an IOTAG in as much as we store the user's  !
!   TAG in the IOCB so that we may return it at I/O completion.     !
!                             !
!   IOCBs are also used to implement ^SIGNALTIMEOUT;  such an IOCB    !
!  is linked to the initiating task's TCB.IOCBH/IOCBT list and into   !
!   the timed wait list via FCBLINK; the internal wakeup time is    !
!   stored in wakeup.                    !
!------------------------------------------------------------------------------!
Struct Iocb^Template (*);     !I/O Control Block
 Begin
 Int(32) Tcblink[0:1],    !Iocb links for Task owning this io
    Fcblink[0:1],    !Iocb links for this file
    Lhlink[0:1],    !Iocb links for Line^handler use
    Wakeup   = Lhlink,  !Internal wakeup time for
              !signaltimeout IOCB
    Syncid   = Lhlink;  !Syncid for $receive iocb's
 Int  State,        !Iocb state (See Below)
    Optype,        !I/O Operation Type
    Iocnt,        !I/O count from AWAITIO
              !Signaltimeout Definitions
    Signal^Param1 = Iocnt; !Parameter1 for signaltimeout
 Int(32) Signal^Param2[0:-1];  !Parameter2 for signaltimeout
 Int  Cnt;         !Max reply size from RECEIVEINFO
 Int(32) BufaddrX;     !EXT Buffer address is quivalenced
 Struct Lb = BufaddrX;
  Begin
  Int Ext^Addr;     !Not used for local buffer address
  Int Buf^Addr;       !Used by local buffer to hold address
 End;
              !Setmode Definitions
 Int  Setmode^Funct = Iocnt,   !Setmode function
    Setmode^P1  = Cnt,   !Setmode param1
    Setmode^P2  = BufaddrX, !Setmode param2  - POINTS to a INT32
              !Control Definitions!
    Control^Op  = Iocnt,   !Control op
    Control^Param = Cnt;   !Control Parameter
 Int(32) Histag;        !Task's NOWAIT I/O Tag
 Int(32) Xbufaddr  = Histag;  !When $recieve IOCB is in IO^queued
              !then ptr is in EXT MEM










