$save nolist /* * Name: duib.lit -- Device-Unit Information Block definition. * * * name: ASCII name of dev-unit, null padded * file$driver: bit(i) ==> file-driver (i+1) is ok for this device. * See idevmg.plm * functs: from EPS, bit i ==> function(i) supported by the driver. * flags: For 215 only. See EPS. * functions are F$FORMAT, F$READ, etc. * dev$gran: device granularity in bytes. * dev$size: size (in bytes) of device-unit * device: device number/device code * unit: device specific number of controller sub-unit (i.e., * for a 204, could be 0,1 to indicate different drives) * dev$unit: unique number identifying a device/unit pair for device * allocation purposes * init$io: driver procedure for initializing driver * finish$io: driver procedure for turning off/deallocating driver * queue$io: driver procedure for queueing I/O requests * cancel$io: driver procedure for cancelling I/O requests * device$info$p: device specific information pointer. * unit$info$p: unit specific information pointer. * update$timeout: time (ticks) before update on this unit * num$buffers: number of deblocking/buffering buffers for this unit * priority: service task priority. * fixed$update: boolean to indicate use of wall clock updates. * max$buffers: maximum no. of buffers for device (used by EIOS) * fill: filler byte */ DECLARE DUIB$PART$ONE LITERALLY 'name(DEV$NAME$LEN) BYTE, file$driver WORD, functs BYTE, flags BYTE, dev$gran WORD, dev$size DWORD, device BYTE, unit BYTE, dev$unit WORD', DUIB$PART$TWO LITERALLY 'init$io SIZE$OF$OFFSET, finish$io SIZE$OF$OFFSET, queue$io SIZE$OF$OFFSET, cancel$io SIZE$OF$OFFSET, device$info$p POINTER, unit$info$p POINTER', DUIB$PART$THREE LITERALLY 'update$timeout WORD, num$buffers WORD, priority BYTE, fixed$update BYTE, max$buffers BYTE, fill BYTE', DEV$UNIT$INFO$BLOCK LITERALLY 'STRUCTURE( DUIB$PART$ONE, DUIB$PART$TWO, DUIB$PART$THREE)'; DECLARE VF$AUTO LITERALLY '1', VF$DENSITY LITERALLY '2', VF$SIDES LITERALLY '4', VF$MINI LITERALLY '8'; $restore