1 /*        Begin  include file ... rcp_data.incl.pl1
  2    *
  3    *      Created on 09/06/74 by Bill Silver.
  4    *      This include file defines the Resource Control Package data base, rcp_data.
  5    *      It is initialized in ring 0 by rcp_init.  It is maintained in ring 1 by RCP.
  6    *      It contains information about all of the devices and volumes managed by RCP.
  7    *      This include file references rcp_com_seg.incl.pl1.
  8 
  9    *      Modified by R.J.C. Kissel on 10/5/77 to add the check_label bit.
 10    *      Modified by Michael R. Jordan on 04/24/78 to add modes and attached flag.
 11    *      Modified on 12/09/78 to add removable media bit.
 12    *      Modified 3/79 by Michael R. Jordan for MR7.0R.
 13    *      Modified 3/79 by C. D. Tavares for expandable RCP modes.
 14    *      Modified 11/84 by Paul Farley to add fips flag.
 15    *      Modified 02/85 by Paul Farley to add no_protect and opr_int_available flags.
 16 */
 17 
 18 /****^  HISTORY COMMENTS:
 19   1) change(85-09-09,Farley), approve(85-09-09,MCR6979),
 20      audit(85-12-09,CLJones), install(86-03-21,MR12.0-1033):
 21      Support FIPS and IMU.
 22                                                    END HISTORY COMMENTS */
 23 
 24 dcl  rcpd_ptr ptr;                                          /* Points to base of RCPD. */
 25 dcl  dtype_ptr ptr;                                         /* Points to a device type entry. */
 26 dcl  device_ptr ptr;                                        /* Points to a device entry. */
 27 dcl  volume_ptr ptr;                                        /* Points to a volume entry. */
 28 
 29 dcl 1 rcpd based (rcpd_ptr) aligned,                        /* Begin at word 0 of RCPD. */
 30     2 lock_info like lock_info,                             /* Data used to lock this segment. */
 31     2 init bit (1) unal,                                    /* ON => rcp_ring1_init_ has executed */
 32     2 modes like rcp_init_flags unaligned,
 33     2 tot_dtypes fixed bin,                                 /* Number of known device types. */
 34     2 tot_devices fixed bin,                                /* Total number of devices configured. */
 35     2 tot_volumes fixed bin,                                /* Number of possible attached volumes. */
 36     2 last_volume fixed bin,                                /* The last volume entry currently in use. */
 37     2 mtimer_chan fixed bin (71),                           /* Event channel for mount timer. */
 38     2 mtimer_pid bit (36),                                  /* ID of mount timer process. */
 39     2 accounting_chan fixed bin (71),                       /* Event channel for device accounting */
 40     2 accounting_pid bit (36),                              /* ID of accounting process */
 41     2 unload_sleep_time fixed bin (71),                     /* Number of microseconds to wait for unload completion. */
 42     2 pad (7) fixed bin,
 43     2 dtype (0 refer (rcpd.tot_dtypes))                     /* One entry per device type. */
 44      like dtype,                                            /* See structure below. */
 45     2 device (0 refer (rcpd.tot_devices))                   /* One entry per configured device. */
 46      like device,                                           /* See structure below. */
 47     2 volume (0 refer (rcpd.tot_volumes))                   /* One entry per possible attached volume. */
 48      like volume,                                           /* See structure below. */
 49     2 end bit (36) aligned;                                 /* End of rcp_data. */
 50 
 51 dcl 1 dtype based (dtype_ptr) aligned,                      /* Entry for one device type. */
 52     2 device_type char (32),                                /* Name of this device type. */
 53     2 max_concurrent fixed bin,                             /* Max number of concurrently assigned devices. */
 54     2 num_reserved fixed bin,                               /* Num of devices reserved for system processes. */
 55     2 num_devices fixed bin,                                /* Num of devices of this type that are configured. */
 56     2 first_off bit (18),                                   /* Offset of first device entry. */
 57     2 histo_times (3) fixed bin;                            /* Used to compute histograms for this device type. */
 58 
 59 dcl 1 device based (device_ptr) aligned,                    /* Up to state must = rcs.rcse. */
 60     2 device_name char (8),                                 /* Name of device associated with this entry. */
 61     2 volume_name char (32),                                /* Volume name.  Blank => no volume. */
 62     2 dtypex fixed bin,                                     /* Device type index. */
 63     2 model fixed bin,                                      /* Device model number. */
 64     2 num_qualifiers fixed bin,                             /* Number of device qualifiers. */
 65     2 qualifiers (4) fixed bin (35),                        /* Device qualifiers. */
 66     2 state_time fixed bin (71),                            /* Time device put into current state. */
 67     2 state fixed bin,                                      /* 0 => free,  1 => assigned,  2 => deleted,
 68                                                                3 => storage system, 4 => reserved */
 69 
 70 /*        *         *         *         *         ** Following fields are unique to device entry. */
 71 
 72     2 unassign_state fixed bin,                             /* State to return when unassigning. */
 73     2 acs_name char (12),                                   /* Entry name of ACS for this device. */
 74     2 next_off bit (18),                                    /* Offset of next entry for this device type. */
 75     2 iom_num fixed bin,                                    /* IOM number for this device. */
 76     2 chan_num fixed bin,                                   /* Channel number for this device. */
 77     2 num_channels fixed bin,                               /* Num channels that may address device. */
 78     2 flags,                                                /* Special info flags. */
 79      (3 delete bit (1),                                     /* ON => Delete device when it is unassigned. */
 80       3 priv bit (1),                                       /* ON => Deleted device assigned for priv attach. */
 81       3 reservable bit (1),                                 /* ON => may be reserved for system process. */
 82       3 reserved bit (1),                                   /* ON => reserved to a reserved process. */
 83       3 mounting bit (1),                                   /* ON => mount pending. */
 84       3 writing bit (1),                                    /* ON => mounting for writing. */
 85       3 attached bit (1) unal,                              /* ON => device is attached. */
 86       3 not_removable_media bit (1),                        /* ON => cannot remove volume from device. */
 87       3 fips bit (1),                                       /* ON => FIPS device. */
 88       3 no_protect bit (1),                                 /* ON => device has no protect sw. */
 89       3 opr_int_available bit (1),                          /* ON => device connected to MPC with OI button. */
 90       3 unused bit (25)) unal,
 91     2 process_id bit (36),                                  /* ID of assigned process. */
 92     2 group_id char (32),                                   /* Process group ID. */
 93     2 error_count fixed bin (35),                           /* Total error count.  Defined by user ring. */
 94     2 num_assigns fixed bin (35),                           /* Total # of times device assigned & unassigned. */
 95     2 tot_assign_time fixed bin (71),                       /* Total time that device was assigned. */
 96     2 histogram (4) fixed bin,                              /* Assignment time histogram. */
 97     2 reservation_id fixed bin (71),
 98     2 reserved_by char (32),                                /* Who made this reservation. */
 99     2 current_authorization bit (72) aligned;               /* Authoization of process using this device. */
100 
101 dcl 1 volume based (volume_ptr) aligned,                    /* Entry for one volume. */
102     2 process_id bit (36),                                  /* "0"b => unassigned. */
103     2 volume_name char (32),                                /* Volume name. */
104     2 vtypex fixed bin,                                     /* Volume type index. */
105     2 group_id char (32),                                   /* This is used for the reserved_for field. */
106     2 reserved_by char (32),
107     2 reservation_id fixed bin (71),
108     2 state_time fixed bin (71),                            /* Same as for a device. */
109     2 state fixed bin,                                      /* Same as for a device. */
110     2 unassign_state fixed bin,                             /* State to return when unassigning. */
111     2 current_authorization bit (72) aligned;               /* Authorization of process using this volume. */
112 
113 %include rcp_init_flags;
114 
115 /*        End of include file ... rcp_data.incl.pl1         */