1 /*        Begin  include file ... rcp_com_seg.incl.pl1
  2    *
  3    *      Created on 11/20/74 by Bill Silver.
  4    *      Modified on 09/19/77 by R.J.C. Kissel to add label authentication bits.
  5    *      Modified on 12/09/78 by Michael R. Jordan to add removable media bit and label_type.
  6    *      Modified 1/79 by R.J.C. Kissel to add disk label authentication bits.
  7    *      Modified 2/79 by Michael R. Jordan to add volume_density.
  8    *      Modified 11/84 by Paul Farley to add fips flag.
  9    *      Modified 1/3/85 by Fawcett to allow room for mca device type
 10    *      Modified 02/85 by Paul Farley to add no_protect and opr_int_available flags.
 11    *      This include file defines the Resource Control Package communication segment.
 12    *      This segment is used to communicate requests between the various internal
 13    *      parts of RCP.
 14 */
 15 
 16 /****^  HISTORY COMMENTS:
 17   1) change(85-09-09,Farley), approve(85-09-09,MCR6979),
 18      audit(85-12-09,CLJones), install(86-03-21,MR12.0-1033):
 19      Support MCA and FIPS.
 20                                                    END HISTORY COMMENTS */
 21 
 22 dcl  lock_info_ptr ptr;                                     /* Pointer to lock info structure. */
 23 dcl  rcs_ptr ptr;                                           /* Pointer to base of RCS. */
 24 dcl  rcse_ptr ptr;                                          /* Pointer to an RCS entry. */
 25 
 26 dcl 1 based_rcp_id based aligned,                           /* Overlay of an rcp_id. */
 27    (2 id_count fixed bin (17),                              /* Unique count index. */
 28     2 rcse_off bit (18)) unaligned;                         /* Offset of rcp_com_seg entry. */
 29 
 30 dcl 1 rcs based (rcs_ptr) aligned,                          /* Begin at word zero of rcp_com_seg. */
 31     2 lock_info like lock_info,                             /* Data used to lock this segment. */
 32     2 ws_maxs (8) fixed bin (19),                           /* Max IOI workspace size in words. */
 33     2 ws_pmaxs (8) fixed bin (19),                          /* Max IOI workspace size for priv attachments. */
 34     2 to_maxs (8) fixed bin (71),                           /* Max IOI time-out intervals in microseconds. */
 35     2 sys_directory char (32),                              /* Directory  used to define a system process. */
 36     2 sys_acs char (32),                                    /* Entry name used to define a system process. */
 37     2 acs_directory char (32),                              /* Directory containing device ACSs. */
 38     2 id_count fixed bin (35),                              /* Counter used to form rcp_id. */
 39     2 max_entries fixed bin,                                /* Maximum number of entries allowed. */
 40     2 num_entries fixed bin,                                /* Total number of entries. */
 41     2 first_free_off bit (18),                              /* Offset of first free entry. */
 42     2 entry (0 refer (rcs.num_entries))                     /* Array of request entries. */
 43      like rcse,                                             /* See structure below. */
 44     2 end bit (36);                                         /* End of rcp_com_seg. */
 45 
 46 dcl 1 lock_info based (lock_info_ptr) aligned,              /* Used to meter locking. */
 47     2 lock bit (36),                                        /* The lock itself. */
 48     2 num_locks fixed bin (35),                             /* Number of times locked. */
 49     2 num_lock_waits fixed bin (35),                        /* Number of lock waits. */
 50     2 time_of_lock fixed bin (71),                          /* Time of last lock. */
 51     2 tot_lock_time fixed bin (71),                         /* Total time locked. */
 52     2 tot_wait_time fixed bin (71),                         /* Total time waiting for lock. */
 53     2 starting_time fixed bin (71);                         /* Time metering started. */
 54 
 55 dcl 1 rcse based (rcse_ptr) aligned,                        /* Up to state must = rcpd.device. */
 56     2 device_name char (8),                                 /* Name of device associated with this entry. */
 57     2 volume_name char (32),                                /* Volume name.  Blank => no volume. */
 58     2 dtypex fixed bin,                                     /* Device type index. */
 59     2 model fixed bin,                                      /* Device model number. */
 60     2 num_qualifiers fixed bin,                             /* Number of device qualifiers. */
 61     2 qualifiers (4) fixed bin (35),                        /* Device qualifiers. */
 62     2 state_time fixed bin (71),                            /* Time device put into current state. */
 63     2 state fixed bin,                                      /* 0 - free       1 - assigning  2 - assigned */
 64                                                             /* 3 - attaching  4 - attached   5 - completed. */
 65 
 66 /*        *         *         *         *         ** Following fields are unique to RCS entry. */
 67     2 kind fixed bin,                                       /* 1 => attach, 2 => assign */
 68     2 free_off bit (18),                                    /* Offset of next free entry.  0 => not free. */
 69     2 user_off bit (18),                                    /* Offset of next entry in user list. */
 70     2 device_off bit (18),                                  /* Offset of device entry in RCPD. */
 71     2 volume_off bit (18),                                  /* Offset of volume entry in RCPD. */
 72     2 rcse_off bit (18),                                    /* Offset of associated RCS entry. */
 73     2 caller_level fixed bin,                               /* Caller's validation level. */
 74     2 disposition bit (1),                                  /* ON => retain, OFF => unassign. */
 75     2 flags,                                                /* Special info flags. */
 76      (3 device bit (1),                                     /* ON => assigning a specific device. */
 77       3 priv bit (1),                                       /* ON => attached with IOI privilege. */
 78       3 system bit (1),                                     /* ON => assigned to a system process. */
 79       3 t_and_d bit (1),                                    /* ON => T&D attachment. */
 80       3 volume bit (1),                                     /* ON => volume associated with this device. */
 81       3 writing bit (1),                                    /* ON => writing on volume. */
 82       3 have_auth bit (1),                                  /* ON => tape volume authenticated. */
 83       3 need_auth bit (1),                                  /* ON => tape volume needs authentication. */
 84       3 auth_set bit (1),                                   /* ON => "have_auth" has been set. */
 85       3 preload_allowed bit (1),                            /* ON => preloading of volumes is allowed. */
 86       3 preloaded bit (1),                                  /* ON => volume may be loaded on device. */
 87       3 not_removable_media bit (1),                        /* ON => cannot remove volume from device. */
 88       3 disk_ss_pack bit (1),                               /* ON => disk is a storage system volume. */
 89       3 disk_copy_of_ss_pack bit (1),                       /* ON => disk is a copy of a storage system volume. */
 90       3 disk_io_pack bit (1),                               /* ON => disk has label but is not storage system. */
 91       3 disk_unregistered bit (1),                          /* ON => disk is unregistered storage system volume. */
 92       3 disk_unreadable bit (1),                            /* ON => io error reading disk label. */
 93       3 must_auto_register bit (1),                         /* ON => unregistered volume requested */
 94       3 fips bit (1),                                       /* ON => FIPS device. */
 95       3 no_protect bit (1),                                 /* ON => device has no protect sw. */
 96       3 opr_int_available bit (1),                          /* ON => device connected to MPC with OI button. */
 97       3 unused bit (6),
 98       3 volume_density_index fixed bin (3) unsigned,        /* Density of volume */
 99       3 label_type fixed bin (6) unsigned)unaligned,        /* Type of label read by RCP. */
100     2 rcp_id bit (36),                                      /* ID of this entry. */
101     2 event_id fixed bin (71),                              /* Caller's event channel ID. */
102     2 process_id bit (36),                                  /* ID of calling process. */
103     2 group_id char (32),                                   /* Group ID of calling process. */
104     2 ecode fixed bin (35),                                 /* Assignment error code. */
105     2 version_num fixed bin,                                /* Device info version number. */
106     2 workspace_max fixed bin (19),                         /* Max size of IOI workspace buffer. */
107     2 timeout_max fixed bin (71),                           /* Max IOI time-out interval. */
108     2 ioi_index fixed bin,                                  /* IOI device index. */
109     2 workspace_ptr ptr,                                    /* Pointer to IOI workspace buffer. */
110     2 caller_comment char (64);                             /* Caller's comment. */
111 
112 /*        End of include file ... rcp_com_seg.incl.pl1      */