1 /* Begin include file ... tdcm_info.incl.pl1 2 * 3 * Created on 02/20/75 by Bill Silver. 4 * Modified 5/20/77 by Noel I. Morris for DCC. 5 * Modified 3/19/82 by J. A. Bush for Marker interrupt processing 6 * This include file defines the IOI workspace used by tdcm_. 7 */ 8 dcl ws_ptr ptr; /* Pointer to base of tdcm_ IOI workspace. */ 9 10 dcl 1 ws based (ws_ptr) aligned, /* Starts at base of ioi_ workspace. */ 11 2 info like ws_info, /* See ws_info structure below. */ 12 2 ndt_list (10), /* List of non-data transfer IDCWs. */ 13 3 idcw bit (36), /* IDCWs. */ 14 2 rw_list (12), /* DCW list for reads and writes. */ 15 3 idcw bit (36), /* IDCW. */ 16 3 dcw bit (36), /* DCW. */ 17 2 mark_tdcw bit (36), /* TDCW to chain the DCW list when processing Markers */ 18 2 statq (4) like istat, /* A queue of IOI status entries. */ 19 2 pad_ev ptr, /* to force buffer to even location */ 20 2 buffer (0 refer (ws.info.buf_size)) bit (36) aligned, 21 2 buf_end bit (36); /* Marks end of data buffer. */ 22 23 dcl 1 ws_info based aligned, /* Control information. */ 24 2 flags, /* All flags in one word. */ 25 (3 attached bit (1), /* ON => tape drive has been attached. */ 26 3 connected bit (1), /* ON => there is a connect in progress. */ 27 3 get_size bit (1), /* ON => return actual read count. */ 28 3 ndtrans bit (1), /* ON => non-data transfer type connect. */ 29 3 reading bit (1), /* ON => connect issued for reading. */ 30 3 large_rec bit (1), /* ON => transmitting record longer than 4096 words */ 31 3 allow_marker bit (1), /* ON => Set up DCW list for marker interrupt processing */ 32 3 good_ws bit (1)) unaligned, /* ON => can get a workspace big enough to satisfy user. */ 33 2 buf_size fixed bin, /* Current size of tdcm_ I/O buffer. */ 34 2 rcp_id bit (36) aligned, /* ID used to communicate with rcp_. */ 35 2 ioix fixed bin, /* Index used to communicate with ioi_. */ 36 2 statqx fixed bin, /* Index of current status queue entry. */ 37 2 process_id bit (36) aligned, /* User's process ID. */ 38 2 tracks fixed bin, /* Temporary place to save track type. */ 39 2 wait_list, /* Used to block. */ 40 3 num_ev_chans fixed bin, /* Number of channels in list. */ 41 3 wait_echan fixed bin (71), /* Used to wait when blocked. */ 42 2 fast_echan fixed bin (71), /* Fast event channel used to wait. */ 43 2 special_echan fixed bin (71), /* Event call channel for special interrupts. */ 44 2 user_echan fixed bin (71), /* Event channel set up by user in tseg. */ 45 2 init_echan fixed bin (71), /* Event channel to use after drive attached. */ 46 2 meters, /* temporary meters */ 47 3 last_io_time fixed bin (71), /* clock time of last data xfer I/O */ 48 3 io_delta fixed bin (71), /* total delta times */ 49 3 low_delta fixed bin (71), /* lowest time between data xfer i/os */ 50 3 high_delta fixed bin (71), /* longest time between data xfer i/os */ 51 3 number_ios fixed bin (35), /* number of data xfer i/os */ 52 3 block fixed bin (35), /* # of times we went blocked awaiting I/O to complete */ 53 3 no_block fixed bin (35), /* # of times status queue precessed w/o going blocked */ 54 3 mark_st fixed bin (35), /* # of marker interrupts received */ 55 3 term_st fixed bin (35), /* # of term interrupts received */ 56 3 term_ne fixed bin (35), /* # of term interrupts received with no error status */ 57 3 most_consec_mark fixed bin (35), /* longest burst of marker interrupts processed */ 58 3 consec_mark fixed bin (35), /* counter for keeping track of consecutive markers */ 59 3 block_count fixed bin, /* highest number of blocks per I/O call */ 60 2 subset_size fixed bin, /* max block size of data xfer I/O */ 61 2 detachx fixed bin, /* Index that tells what has been set up. */ 62 2 disposition bit (1), /* RCP assignment disposition. */ 63 2 read_start fixed bin, /* First tseg buffer we are reading into. */ 64 2 buffer_size (12) fixed bin, /* Data size in each workspace buffer. */ 65 2 ndt_offsetx fixed bin, /* Offset of non-data transfer DCW list. */ 66 2 rw_offsetx fixed bin, /* Offset of read/write DCW list. */ 67 2 mark_offset fixed bin, /* buffer offset of last marker interrupt */ 68 2 error_count fixed bin, /* Count of errors during attachment. */ 69 2 read_idcws (0:5) bit (36) aligned, /* An array of read and write IDCW's. */ 70 2 write_idcws (0:5) bit (36) aligned; /* One for each possible buffer in 1 connect. */ 71 72 /* End of include file ... tdcm_info.incl.pl1 */