GDSX Manual
DCCBDECS and ULHDECSE Listings
Extended General Device Support (GDSX) Manual–134303
C-6
DCCBDECS Listing
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
Int(32) Tcbaddr; !Task requesting this IO
Int File, !File #
Msgtag; !$RECEIVE message tag