COMPILATION LISTING OF SEGMENT rcp_pre_claim_ Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 0947.0 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(87-06-25,Rauschelbach), approve(87-06-29,MCR7736), 17* audit(87-07-21,Farley), install(87-08-06,MR12.1-1063): 18* System error message documentation was added. 19* END HISTORY COMMENTS */ 20 21 22 rcp_pre_claim_: 23 proc (a_reservation_id, a_group_id, a_process_id, a_code); 24 25 /* 26* * This subroutine will implement the privileged pre-claiming of reservations. 27* * This function will only be used by the absentee manager in the 28* * initializer process. 29* * It is needed because when the absentee manager originally makes 30* * the reservation it does not know the process_id of the process 31* * it will create. Because of this it is possible for a different 32* * job with the same group_id to claim the reservation. This problem 33* * is avoided by having the absentee manager call res_pre_claim 34* * Which will fill in the process_id of the job for which the 35* * reservation was really made. 36**/ 37 38 /* 39* Written by R.J.C. Kissel 5/78. 40* Modfied by R.J.C. Kissel on 1/79 to do proper reservation accounting and log res id. 41**/ 42 43 /* Arguments */ 44 45 dcl a_reservation_id fixed bin (71); 46 dcl a_group_id char (*); 47 dcl a_process_id bit (36); 48 dcl a_code fixed bin (35); 49 50 /* Local Variables */ 51 52 dcl res_id fixed bin (71); 53 dcl log_res_id char (19); 54 dcl grp_id char (32) aligned; 55 dcl prc_id bit (36); 56 dcl code fixed bin (35); 57 dcl i fixed bin; /* Index in rcpd. */ 58 dcl any_found bit (1); 59 60 dcl caller_level fixed bin; 61 62 /* Local Constants */ 63 64 /* Local Overlays */ 65 66 /* Include Files */ 67 1 1 /* Begin include file ... rcp_data.incl.pl1 1 2* * 1 3* * Created on 09/06/74 by Bill Silver. 1 4* * This include file defines the Resource Control Package data base, rcp_data. 1 5* * It is initialized in ring 0 by rcp_init. It is maintained in ring 1 by RCP. 1 6* * It contains information about all of the devices and volumes managed by RCP. 1 7* * This include file references rcp_com_seg.incl.pl1. 1 8* 1 9* * Modified by R.J.C. Kissel on 10/5/77 to add the check_label bit. 1 10* * Modified by Michael R. Jordan on 04/24/78 to add modes and attached flag. 1 11* * Modified on 12/09/78 to add removable media bit. 1 12* * Modified 3/79 by Michael R. Jordan for MR7.0R. 1 13* * Modified 3/79 by C. D. Tavares for expandable RCP modes. 1 14* * Modified 11/84 by Paul Farley to add fips flag. 1 15* * Modified 02/85 by Paul Farley to add no_protect and opr_int_available flags. 1 16**/ 1 17 1 18 /****^ HISTORY COMMENTS: 1 19* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 1 20* audit(85-12-09,CLJones), install(86-03-21,MR12.0-1033): 1 21* Support FIPS and IMU. 1 22* END HISTORY COMMENTS */ 1 23 1 24 dcl rcpd_ptr ptr; /* Points to base of RCPD. */ 1 25 dcl dtype_ptr ptr; /* Points to a device type entry. */ 1 26 dcl device_ptr ptr; /* Points to a device entry. */ 1 27 dcl volume_ptr ptr; /* Points to a volume entry. */ 1 28 1 29 dcl 1 rcpd based (rcpd_ptr) aligned, /* Begin at word 0 of RCPD. */ 1 30 2 lock_info like lock_info, /* Data used to lock this segment. */ 1 31 2 init bit (1) unal, /* ON => rcp_ring1_init_ has executed */ 1 32 2 modes like rcp_init_flags unaligned, 1 33 2 tot_dtypes fixed bin, /* Number of known device types. */ 1 34 2 tot_devices fixed bin, /* Total number of devices configured. */ 1 35 2 tot_volumes fixed bin, /* Number of possible attached volumes. */ 1 36 2 last_volume fixed bin, /* The last volume entry currently in use. */ 1 37 2 mtimer_chan fixed bin (71), /* Event channel for mount timer. */ 1 38 2 mtimer_pid bit (36), /* ID of mount timer process. */ 1 39 2 accounting_chan fixed bin (71), /* Event channel for device accounting */ 1 40 2 accounting_pid bit (36), /* ID of accounting process */ 1 41 2 unload_sleep_time fixed bin (71), /* Number of microseconds to wait for unload completion. */ 1 42 2 pad (7) fixed bin, 1 43 2 dtype (0 refer (rcpd.tot_dtypes)) /* One entry per device type. */ 1 44 like dtype, /* See structure below. */ 1 45 2 device (0 refer (rcpd.tot_devices)) /* One entry per configured device. */ 1 46 like device, /* See structure below. */ 1 47 2 volume (0 refer (rcpd.tot_volumes)) /* One entry per possible attached volume. */ 1 48 like volume, /* See structure below. */ 1 49 2 end bit (36) aligned; /* End of rcp_data. */ 1 50 1 51 dcl 1 dtype based (dtype_ptr) aligned, /* Entry for one device type. */ 1 52 2 device_type char (32), /* Name of this device type. */ 1 53 2 max_concurrent fixed bin, /* Max number of concurrently assigned devices. */ 1 54 2 num_reserved fixed bin, /* Num of devices reserved for system processes. */ 1 55 2 num_devices fixed bin, /* Num of devices of this type that are configured. */ 1 56 2 first_off bit (18), /* Offset of first device entry. */ 1 57 2 histo_times (3) fixed bin; /* Used to compute histograms for this device type. */ 1 58 1 59 dcl 1 device based (device_ptr) aligned, /* Up to state must = rcs.rcse. */ 1 60 2 device_name char (8), /* Name of device associated with this entry. */ 1 61 2 volume_name char (32), /* Volume name. Blank => no volume. */ 1 62 2 dtypex fixed bin, /* Device type index. */ 1 63 2 model fixed bin, /* Device model number. */ 1 64 2 num_qualifiers fixed bin, /* Number of device qualifiers. */ 1 65 2 qualifiers (4) fixed bin (35), /* Device qualifiers. */ 1 66 2 state_time fixed bin (71), /* Time device put into current state. */ 1 67 2 state fixed bin, /* 0 => free, 1 => assigned, 2 => deleted, 1 68* 3 => storage system, 4 => reserved */ 1 69 1 70 /* * * * * ** Following fields are unique to device entry. */ 1 71 1 72 2 unassign_state fixed bin, /* State to return when unassigning. */ 1 73 2 acs_name char (12), /* Entry name of ACS for this device. */ 1 74 2 next_off bit (18), /* Offset of next entry for this device type. */ 1 75 2 iom_num fixed bin, /* IOM number for this device. */ 1 76 2 chan_num fixed bin, /* Channel number for this device. */ 1 77 2 num_channels fixed bin, /* Num channels that may address device. */ 1 78 2 flags, /* Special info flags. */ 1 79 (3 delete bit (1), /* ON => Delete device when it is unassigned. */ 1 80 3 priv bit (1), /* ON => Deleted device assigned for priv attach. */ 1 81 3 reservable bit (1), /* ON => may be reserved for system process. */ 1 82 3 reserved bit (1), /* ON => reserved to a reserved process. */ 1 83 3 mounting bit (1), /* ON => mount pending. */ 1 84 3 writing bit (1), /* ON => mounting for writing. */ 1 85 3 attached bit (1) unal, /* ON => device is attached. */ 1 86 3 not_removable_media bit (1), /* ON => cannot remove volume from device. */ 1 87 3 fips bit (1), /* ON => FIPS device. */ 1 88 3 no_protect bit (1), /* ON => device has no protect sw. */ 1 89 3 opr_int_available bit (1), /* ON => device connected to MPC with OI button. */ 1 90 3 unused bit (25)) unal, 1 91 2 process_id bit (36), /* ID of assigned process. */ 1 92 2 group_id char (32), /* Process group ID. */ 1 93 2 error_count fixed bin (35), /* Total error count. Defined by user ring. */ 1 94 2 num_assigns fixed bin (35), /* Total # of times device assigned & unassigned. */ 1 95 2 tot_assign_time fixed bin (71), /* Total time that device was assigned. */ 1 96 2 histogram (4) fixed bin, /* Assignment time histogram. */ 1 97 2 reservation_id fixed bin (71), 1 98 2 reserved_by char (32), /* Who made this reservation. */ 1 99 2 current_authorization bit (72) aligned; /* Authoization of process using this device. */ 1 100 1 101 dcl 1 volume based (volume_ptr) aligned, /* Entry for one volume. */ 1 102 2 process_id bit (36), /* "0"b => unassigned. */ 1 103 2 volume_name char (32), /* Volume name. */ 1 104 2 vtypex fixed bin, /* Volume type index. */ 1 105 2 group_id char (32), /* This is used for the reserved_for field. */ 1 106 2 reserved_by char (32), 1 107 2 reservation_id fixed bin (71), 1 108 2 state_time fixed bin (71), /* Same as for a device. */ 1 109 2 state fixed bin, /* Same as for a device. */ 1 110 2 unassign_state fixed bin, /* State to return when unassigning. */ 1 111 2 current_authorization bit (72) aligned; /* Authorization of process using this volume. */ 1 112 2 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 2 2 2 3 /* Created on 04/24/78 by Michael R. Jordan */ 2 4 /* Modified 04/10/79 by C. D. Tavares */ 2 5 2 6 dcl rifp ptr; 2 7 2 8 dcl 1 rcp_init_flags based (rifp), 2 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 2 10 2 pad1 bit (2) unaligned, /* obsolete */ 2 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 2 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 2 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 2 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 2 15 2 16 dcl (No_authentication initial (0), 2 17 Nominal_authentication initial (1), 2 18 Automatic_authentication initial (2), 2 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 2 20 2 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 2 22 ("none", "nominal", "automatic", "manual"); 2 23 2 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 1 113 1 114 1 115 /* End of include file ... rcp_data.incl.pl1 */ 68 3 1 /* Begin include file ... rcp_com_seg.incl.pl1 3 2* * 3 3* * Created on 11/20/74 by Bill Silver. 3 4* * Modified on 09/19/77 by R.J.C. Kissel to add label authentication bits. 3 5* * Modified on 12/09/78 by Michael R. Jordan to add removable media bit and label_type. 3 6* * Modified 1/79 by R.J.C. Kissel to add disk label authentication bits. 3 7* * Modified 2/79 by Michael R. Jordan to add volume_density. 3 8* * Modified 11/84 by Paul Farley to add fips flag. 3 9* * Modified 1/3/85 by Fawcett to allow room for mca device type 3 10* * Modified 02/85 by Paul Farley to add no_protect and opr_int_available flags. 3 11* * This include file defines the Resource Control Package communication segment. 3 12* * This segment is used to communicate requests between the various internal 3 13* * parts of RCP. 3 14**/ 3 15 3 16 /****^ HISTORY COMMENTS: 3 17* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 3 18* audit(85-12-09,CLJones), install(86-03-21,MR12.0-1033): 3 19* Support MCA and FIPS. 3 20* END HISTORY COMMENTS */ 3 21 3 22 dcl lock_info_ptr ptr; /* Pointer to lock info structure. */ 3 23 dcl rcs_ptr ptr; /* Pointer to base of RCS. */ 3 24 dcl rcse_ptr ptr; /* Pointer to an RCS entry. */ 3 25 3 26 dcl 1 based_rcp_id based aligned, /* Overlay of an rcp_id. */ 3 27 (2 id_count fixed bin (17), /* Unique count index. */ 3 28 2 rcse_off bit (18)) unaligned; /* Offset of rcp_com_seg entry. */ 3 29 3 30 dcl 1 rcs based (rcs_ptr) aligned, /* Begin at word zero of rcp_com_seg. */ 3 31 2 lock_info like lock_info, /* Data used to lock this segment. */ 3 32 2 ws_maxs (8) fixed bin (19), /* Max IOI workspace size in words. */ 3 33 2 ws_pmaxs (8) fixed bin (19), /* Max IOI workspace size for priv attachments. */ 3 34 2 to_maxs (8) fixed bin (71), /* Max IOI time-out intervals in microseconds. */ 3 35 2 sys_directory char (32), /* Directory used to define a system process. */ 3 36 2 sys_acs char (32), /* Entry name used to define a system process. */ 3 37 2 acs_directory char (32), /* Directory containing device ACSs. */ 3 38 2 id_count fixed bin (35), /* Counter used to form rcp_id. */ 3 39 2 max_entries fixed bin, /* Maximum number of entries allowed. */ 3 40 2 num_entries fixed bin, /* Total number of entries. */ 3 41 2 first_free_off bit (18), /* Offset of first free entry. */ 3 42 2 entry (0 refer (rcs.num_entries)) /* Array of request entries. */ 3 43 like rcse, /* See structure below. */ 3 44 2 end bit (36); /* End of rcp_com_seg. */ 3 45 3 46 dcl 1 lock_info based (lock_info_ptr) aligned, /* Used to meter locking. */ 3 47 2 lock bit (36), /* The lock itself. */ 3 48 2 num_locks fixed bin (35), /* Number of times locked. */ 3 49 2 num_lock_waits fixed bin (35), /* Number of lock waits. */ 3 50 2 time_of_lock fixed bin (71), /* Time of last lock. */ 3 51 2 tot_lock_time fixed bin (71), /* Total time locked. */ 3 52 2 tot_wait_time fixed bin (71), /* Total time waiting for lock. */ 3 53 2 starting_time fixed bin (71); /* Time metering started. */ 3 54 3 55 dcl 1 rcse based (rcse_ptr) aligned, /* Up to state must = rcpd.device. */ 3 56 2 device_name char (8), /* Name of device associated with this entry. */ 3 57 2 volume_name char (32), /* Volume name. Blank => no volume. */ 3 58 2 dtypex fixed bin, /* Device type index. */ 3 59 2 model fixed bin, /* Device model number. */ 3 60 2 num_qualifiers fixed bin, /* Number of device qualifiers. */ 3 61 2 qualifiers (4) fixed bin (35), /* Device qualifiers. */ 3 62 2 state_time fixed bin (71), /* Time device put into current state. */ 3 63 2 state fixed bin, /* 0 - free 1 - assigning 2 - assigned */ 3 64 /* 3 - attaching 4 - attached 5 - completed. */ 3 65 3 66 /* * * * * ** Following fields are unique to RCS entry. */ 3 67 2 kind fixed bin, /* 1 => attach, 2 => assign */ 3 68 2 free_off bit (18), /* Offset of next free entry. 0 => not free. */ 3 69 2 user_off bit (18), /* Offset of next entry in user list. */ 3 70 2 device_off bit (18), /* Offset of device entry in RCPD. */ 3 71 2 volume_off bit (18), /* Offset of volume entry in RCPD. */ 3 72 2 rcse_off bit (18), /* Offset of associated RCS entry. */ 3 73 2 caller_level fixed bin, /* Caller's validation level. */ 3 74 2 disposition bit (1), /* ON => retain, OFF => unassign. */ 3 75 2 flags, /* Special info flags. */ 3 76 (3 device bit (1), /* ON => assigning a specific device. */ 3 77 3 priv bit (1), /* ON => attached with IOI privilege. */ 3 78 3 system bit (1), /* ON => assigned to a system process. */ 3 79 3 t_and_d bit (1), /* ON => T&D attachment. */ 3 80 3 volume bit (1), /* ON => volume associated with this device. */ 3 81 3 writing bit (1), /* ON => writing on volume. */ 3 82 3 have_auth bit (1), /* ON => tape volume authenticated. */ 3 83 3 need_auth bit (1), /* ON => tape volume needs authentication. */ 3 84 3 auth_set bit (1), /* ON => "have_auth" has been set. */ 3 85 3 preload_allowed bit (1), /* ON => preloading of volumes is allowed. */ 3 86 3 preloaded bit (1), /* ON => volume may be loaded on device. */ 3 87 3 not_removable_media bit (1), /* ON => cannot remove volume from device. */ 3 88 3 disk_ss_pack bit (1), /* ON => disk is a storage system volume. */ 3 89 3 disk_copy_of_ss_pack bit (1), /* ON => disk is a copy of a storage system volume. */ 3 90 3 disk_io_pack bit (1), /* ON => disk has label but is not storage system. */ 3 91 3 disk_unregistered bit (1), /* ON => disk is unregistered storage system volume. */ 3 92 3 disk_unreadable bit (1), /* ON => io error reading disk label. */ 3 93 3 must_auto_register bit (1), /* ON => unregistered volume requested */ 3 94 3 fips bit (1), /* ON => FIPS device. */ 3 95 3 no_protect bit (1), /* ON => device has no protect sw. */ 3 96 3 opr_int_available bit (1), /* ON => device connected to MPC with OI button. */ 3 97 3 unused bit (6), 3 98 3 volume_density_index fixed bin (3) unsigned, /* Density of volume */ 3 99 3 label_type fixed bin (6) unsigned)unaligned, /* Type of label read by RCP. */ 3 100 2 rcp_id bit (36), /* ID of this entry. */ 3 101 2 event_id fixed bin (71), /* Caller's event channel ID. */ 3 102 2 process_id bit (36), /* ID of calling process. */ 3 103 2 group_id char (32), /* Group ID of calling process. */ 3 104 2 ecode fixed bin (35), /* Assignment error code. */ 3 105 2 version_num fixed bin, /* Device info version number. */ 3 106 2 workspace_max fixed bin (19), /* Max size of IOI workspace buffer. */ 3 107 2 timeout_max fixed bin (71), /* Max IOI time-out interval. */ 3 108 2 ioi_index fixed bin, /* IOI device index. */ 3 109 2 workspace_ptr ptr, /* Pointer to IOI workspace buffer. */ 3 110 2 caller_comment char (64); /* Caller's comment. */ 3 111 3 112 /* End of include file ... rcp_com_seg.incl.pl1 */ 69 4 1 /* BEGIN INCLUDE FILE rcp_account_msg.incl.pl1 B. Greenberg 8/1/77 */ 4 2 4 3 dcl 1 rcp_account_msg based aligned, /* Message format */ 4 4 2 device_user_procid bit (36), /* id of process using the device */ 4 5 4 6 2 rcp_data_relp bit (18) unal, /* Ptr to rcp_data entry for device */ 4 7 2 devtype fixed bin (8) unal, /* rcp device type involved */ 4 8 2 pad bit (6) unal, 4 9 2 action fixed bin (2) unal; /* see below... */ 4 10 4 11 dcl ( 4 12 RCP_ACCTMSG_assign init (0), 4 13 RCP_ACCTMSG_unassign init (1), 4 14 RCP_ACCTMSG_attach init (2) 4 15 ) options (constant) fixed bin (17) static; 4 16 4 17 /* END INCLUDE FILE rcp_account_msg.incl.pl1 */ 70 5 1 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 5 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 5 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 5 4 5 5 /* This include file has an ALM version. Keep 'em in sync! */ 5 6 5 7 dcl ( 5 8 5 9 /* The following constants define the message action codes. This indicates 5 10*how a message is to be handled. */ 5 11 5 12 SYSERR_CRASH_SYSTEM init (1), 5 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 5 14 5 15 SYSERR_TERMINATE_PROCESS init (2), 5 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 5 17 5 18 SYSERR_PRINT_WITH_ALARM init (3), 5 19 BEEP init (3), /* Beep and print the message on the console. */ 5 20 5 21 SYSERR_PRINT_ON_CONSOLE init (0), 5 22 ANNOUNCE init (0), /* Just print the message on the console. */ 5 23 5 24 SYSERR_LOG_OR_PRINT init (4), 5 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 5 26 5 27 SYSERR_LOG_OR_DISCARD init (5), 5 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 5 29 5 30 5 31 /* The following constants are added to the normal severities to indicate 5 32*different sorting classes of messages. */ 5 33 5 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 5 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 5 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 5 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 5 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 5 39 ) fixed bin internal static options (constant); 5 40 5 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 71 72 73 /* External Entries */ 74 75 dcl cu_$level_get entry (fixed bin); 76 dcl cu_$level_set entry (fixed bin); 77 dcl request_id_ entry (fixed bin (71)) returns (char (19)); 78 dcl get_ring_ entry returns (fixed bin); 79 dcl rcp_pointers_$data entry returns (ptr); 80 dcl rcp_pointers_$com_seg 81 entry returns (ptr); 82 dcl rcp_lock_$lock entry (ptr, fixed bin (35)); 83 dcl rcp_lock_$unlock entry (ptr); 84 dcl rcp_match_user_name_ 85 entry (char (32) aligned, char (32) aligned) returns (bit (1)); 86 dcl hcs_$wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 87 dcl admin_gate_$syserr entry options (variable); 88 89 /* External Constants */ 90 91 dcl error_table_$noentry 92 fixed bin (35) external; 93 dcl error_table_$badcall 94 fixed bin (35) external; 95 96 /* Builtin Functions and Conditions */ 97 98 dcl (addr, rel, unspec) builtin; 99 dcl (cleanup) condition; 100 101 res_id = a_reservation_id; 102 grp_id = a_group_id; 103 prc_id = a_process_id; 104 105 call cu_$level_get (caller_level); 106 107 on cleanup 108 call cleanup_handler; 109 110 call cu_$level_set (get_ring_ ()); 111 112 rcpd_ptr = rcp_pointers_$data (); 113 rcs_ptr = rcp_pointers_$com_seg (); 114 115 log_res_id = request_id_ (res_id); 116 /* Set this for later use. */ 117 118 call rcp_lock_$lock (addr (rcpd.lock_info), code); 119 120 if code ^= 0 121 then goto BAD_ERROR; 122 123 /* 124* * Loop through the rcp data base looking for the reservation 125* * id. Then change the entry by adding the process_id and 126* * leaving everything else the same. 127**/ 128 any_found = "0"b; 129 130 do i = 1 to rcpd.tot_devices; 131 if rcpd.device (i).reservation_id = res_id 132 then do; 133 134 if ^rcp_match_user_name_ (rcpd.device (i).group_id, grp_id) 135 then goto BAD_GROUP; 136 137 any_found = "1"b; 138 rcpd.device (i).process_id = prc_id; 139 140 call ACCOUNT_WAKEUP (addr (rcpd.device (i)), RCP_ACCTMSG_assign); 141 /* Take care of accting when done by the Initializer. */ 142 143 call admin_gate_$syserr (JUST_LOG, "RCP: Pre-claimed device ^a for ^a (prc_id=^o res_id=^a)", 144 rcpd.device (i).device_name, grp_id, prc_id, log_res_id); 145 end; 146 end; 147 148 do i = 1 to rcpd.last_volume; 149 if rcpd.volume (i).reservation_id = res_id 150 then do; 151 152 if ^rcp_match_user_name_ (rcpd.volume (i).group_id, grp_id) 153 then goto BAD_GROUP; 154 155 any_found = "1"b; 156 rcpd.volume (i).process_id = prc_id; 157 call admin_gate_$syserr (JUST_LOG, "RCP: Pre-claimed volume ^a for ^a (prc_id=^o res_id=^a)", 158 rcpd.volume (i).volume_name, grp_id, prc_id, log_res_id); 159 end; 160 end; 161 162 if ^any_found 163 then a_code = error_table_$noentry; 164 else a_code = 0; 165 166 call rcp_lock_$unlock (addr (rcpd.lock_info)); 167 call cu_$level_set (caller_level); 168 return; 169 170 BAD_ERROR: 171 call cleanup_handler; 172 a_code = code; 173 return; 174 175 BAD_GROUP: 176 call cleanup_handler; 177 a_code = error_table_$badcall; 178 return; 179 180 ACCOUNT_WAKEUP: 181 procedure (a_devptr, a_action); 182 183 /* This procedure is called to format an accounting message, and send it to the 184* * accounting process. If the accounting event channel has not been set up, no message is sent. 185**/ 186 187 188 dcl a_devptr ptr; /* Pointer to rcp_data entry */ 189 dcl a_action fixed bin; /* Accounting action */ 190 191 dcl wakeup_buf fixed bin (71); 192 dcl 1 auto_rcpamsg like rcp_account_msg aligned; 193 194 unspec (auto_rcpamsg) = "0"b; 195 196 auto_rcpamsg.device_user_procid = a_devptr -> device.process_id; 197 auto_rcpamsg.rcp_data_relp = rel (a_devptr); 198 auto_rcpamsg.devtype = a_devptr -> device.dtypex; 199 auto_rcpamsg.action = a_action; 200 201 unspec (wakeup_buf) = unspec (auto_rcpamsg); 202 if rcpd.accounting_chan ^= 0 203 then call hcs_$wakeup (rcpd.accounting_pid, rcpd.accounting_chan, wakeup_buf, (0)); 204 205 end ACCOUNT_WAKEUP; 206 207 cleanup_handler: 208 proc; 209 210 call rcp_lock_$unlock (addr (rcpd.lock_info)); 211 call cu_$level_set (caller_level); 212 213 end cleanup_handler; 214 215 /* BEGIN MESSAGE DOCUMENTATION 216* 217* Message: 218* RCP: Pre-claimed device devX_MM for GRP_ID (prc_id= PRC_ID res_id= RES_ID) 219* 220* S: $log 221* 222* T: $run 223* 224* M: An announcement that the absentee manager has preclaimed a device 225* for its use. 226* 227* A: $ignore 228* 229* Message: 230* RCP: Pre-claimed volume VOL_NAME for GRP_ID (prc_id= PRC_ID res_id= RES_ID) 231* 232* S: $log 233* 234* T: $run 235* 236* M: An announcement that the absentee manager has preclaimed a volume 237* for its use. 238* 239* A: $ignore 240* 241* END MESSAGE DOCUMENTATION */ 242 243 end rcp_pre_claim_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0806.7 rcp_pre_claim_.pl1 >spec>install>1111>rcp_pre_claim_.pl1 68 1 03/27/86 1120.0 rcp_data.incl.pl1 >ldd>include>rcp_data.incl.pl1 1-113 2 11/21/79 1458.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 69 3 03/27/86 1120.0 rcp_com_seg.incl.pl1 >ldd>include>rcp_com_seg.incl.pl1 70 4 11/09/77 0713.6 rcp_account_msg.incl.pl1 >ldd>include>rcp_account_msg.incl.pl1 71 5 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. JUST_LOG 000010 constant fixed bin(17,0) initial dcl 5-7 set ref 143* 157* RCP_ACCTMSG_assign constant fixed bin(17,0) initial dcl 4-11 set ref 140* a_action parameter fixed bin(17,0) dcl 189 ref 180 199 a_code parameter fixed bin(35,0) dcl 48 set ref 22 162* 164* 172* 177* a_devptr parameter pointer dcl 188 ref 180 196 197 198 a_group_id parameter char packed unaligned dcl 46 ref 22 102 a_process_id parameter bit(36) packed unaligned dcl 47 ref 22 103 a_reservation_id parameter fixed bin(71,0) dcl 45 ref 22 101 accounting_chan 26 based fixed bin(71,0) level 2 dcl 1-29 set ref 202 202* accounting_pid 30 based bit(36) level 2 dcl 1-29 set ref 202* action 1(33) 000150 automatic fixed bin(2,0) level 2 packed packed unaligned dcl 192 set ref 199* addr builtin function dcl 98 ref 118 118 140 140 166 166 210 210 admin_gate_$syserr 000034 constant entry external dcl 87 ref 143 157 any_found 000122 automatic bit(1) packed unaligned dcl 58 set ref 128* 137* 155* 162 auto_rcpamsg 000150 automatic structure level 1 dcl 192 set ref 194* 201 caller_level 000123 automatic fixed bin(17,0) dcl 60 set ref 105* 167* 211* cleanup 000130 stack reference condition dcl 99 ref 107 code 000120 automatic fixed bin(35,0) dcl 56 set ref 118* 120 172 cu_$level_get 000010 constant entry external dcl 75 ref 105 cu_$level_set 000012 constant entry external dcl 76 ref 110 167 211 device based structure array level 2 in structure "rcpd" dcl 1-29 in procedure "rcp_pre_claim_" set ref 140 140 device based structure level 1 dcl 1-59 in procedure "rcp_pre_claim_" device_name based char(8) array level 3 dcl 1-29 set ref 143* device_user_procid 000150 automatic bit(36) level 2 dcl 192 set ref 196* devtype 1(18) 000150 automatic fixed bin(8,0) level 2 packed packed unaligned dcl 192 set ref 198* dtype based structure level 1 dcl 1-51 dtypex 12 based fixed bin(17,0) level 2 dcl 1-59 ref 198 error_table_$badcall 000040 external static fixed bin(35,0) dcl 93 ref 177 error_table_$noentry 000036 external static fixed bin(35,0) dcl 91 ref 162 get_ring_ 000016 constant entry external dcl 78 ref 110 110 group_id based char(32) array level 3 in structure "rcpd" dcl 1-29 in procedure "rcp_pre_claim_" set ref 152* group_id based char(32) array level 3 in structure "rcpd" dcl 1-29 in procedure "rcp_pre_claim_" set ref 134* grp_id 000107 automatic char(32) dcl 54 set ref 102* 134* 143* 152* 157* hcs_$wakeup 000032 constant entry external dcl 86 ref 202 i 000121 automatic fixed bin(17,0) dcl 57 set ref 130* 131 134 138 140 140 143* 148* 149 152 156 157* last_volume 20 based fixed bin(17,0) level 2 dcl 1-29 ref 148 lock_info based structure level 2 in structure "rcpd" dcl 1-29 in procedure "rcp_pre_claim_" set ref 118 118 166 166 210 210 lock_info based structure level 1 dcl 3-46 in procedure "rcp_pre_claim_" log_res_id 000102 automatic char(19) packed unaligned dcl 53 set ref 115* 143* 157* prc_id 000117 automatic bit(36) packed unaligned dcl 55 set ref 103* 138 143* 156 157* process_id 36 based bit(36) level 2 in structure "device" dcl 1-59 in procedure "rcp_pre_claim_" ref 196 process_id based bit(36) array level 3 in structure "rcpd" dcl 1-29 in procedure "rcp_pre_claim_" set ref 138* process_id based bit(36) array level 3 in structure "rcpd" dcl 1-29 in procedure "rcp_pre_claim_" set ref 156* rcp_account_msg based structure level 1 dcl 4-3 rcp_data_relp 1 000150 automatic bit(18) level 2 packed packed unaligned dcl 192 set ref 197* rcp_init_flags based structure level 1 packed packed unaligned dcl 2-8 rcp_lock_$lock 000024 constant entry external dcl 82 ref 118 rcp_lock_$unlock 000026 constant entry external dcl 83 ref 166 210 rcp_match_user_name_ 000030 constant entry external dcl 84 ref 134 152 rcp_pointers_$com_seg 000022 constant entry external dcl 80 ref 113 rcp_pointers_$data 000020 constant entry external dcl 79 ref 112 rcpd based structure level 1 dcl 1-29 rcpd_ptr 000124 automatic pointer dcl 1-24 set ref 112* 118 118 130 131 134 138 140 140 143 148 149 152 156 157 166 166 202 202 202 210 210 rcs_ptr 000126 automatic pointer dcl 3-23 set ref 113* rcse based structure level 1 dcl 3-55 rel builtin function dcl 98 ref 197 request_id_ 000014 constant entry external dcl 77 ref 115 res_id 000100 automatic fixed bin(71,0) dcl 52 set ref 101* 115* 131 149 reservation_id based fixed bin(71,0) array level 3 in structure "rcpd" dcl 1-29 in procedure "rcp_pre_claim_" ref 149 reservation_id based fixed bin(71,0) array level 3 in structure "rcpd" dcl 1-29 in procedure "rcp_pre_claim_" set ref 131 tot_devices 16 based fixed bin(17,0) level 2 dcl 1-29 ref 130 149 152 156 157 tot_dtypes 15 based fixed bin(17,0) level 2 dcl 1-29 ref 131 134 138 140 140 143 149 152 156 157 unspec builtin function dcl 98 set ref 194* 201* 201 volume based structure level 1 dcl 1-101 in procedure "rcp_pre_claim_" volume based structure array level 2 in structure "rcpd" dcl 1-29 in procedure "rcp_pre_claim_" volume_name based char(32) array level 3 dcl 1-29 set ref 157* wakeup_buf 000146 automatic fixed bin(71,0) dcl 191 set ref 201* 202* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ANNOUNCE internal static fixed bin(17,0) initial dcl 5-7 Automatic_authentication internal static fixed bin(17,0) initial dcl 2-16 BEEP internal static fixed bin(17,0) initial dcl 5-7 CRASH internal static fixed bin(17,0) initial dcl 5-7 LOG internal static fixed bin(17,0) initial dcl 5-7 Manual_authentication internal static fixed bin(17,0) initial dcl 2-16 No_authentication internal static fixed bin(17,0) initial dcl 2-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 2-16 RCP_ACCTMSG_attach internal static fixed bin(17,0) initial dcl 4-11 RCP_ACCTMSG_unassign internal static fixed bin(17,0) initial dcl 4-11 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 5-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 5-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 5-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 5-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 5-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 5-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 5-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 5-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 5-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 5-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 5-7 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 5-7 authentication_level_names internal static char(12) initial array packed unaligned dcl 2-21 based_rcp_id based structure level 1 dcl 3-26 device_ptr automatic pointer dcl 1-26 dtype_ptr automatic pointer dcl 1-25 lock_info_ptr automatic pointer dcl 3-22 rcs based structure level 1 dcl 3-30 rcse_ptr automatic pointer dcl 3-24 rifp automatic pointer dcl 2-6 volume_ptr automatic pointer dcl 1-27 NAMES DECLARED BY EXPLICIT CONTEXT. ACCOUNT_WAKEUP 000627 constant entry internal dcl 180 ref 140 BAD_ERROR 000606 constant label dcl 170 ref 120 BAD_GROUP 000616 constant label dcl 175 ref 134 152 cleanup_handler 000675 constant entry internal dcl 207 ref 107 170 175 rcp_pre_claim_ 000065 constant entry external dcl 22 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1126 1170 732 1136 Length 1466 732 42 262 174 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rcp_pre_claim_ 184 external procedure is an external procedure. on unit on line 107 64 on unit ACCOUNT_WAKEUP internal procedure shares stack frame of external procedure rcp_pre_claim_. cleanup_handler 70 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rcp_pre_claim_ 000100 res_id rcp_pre_claim_ 000102 log_res_id rcp_pre_claim_ 000107 grp_id rcp_pre_claim_ 000117 prc_id rcp_pre_claim_ 000120 code rcp_pre_claim_ 000121 i rcp_pre_claim_ 000122 any_found rcp_pre_claim_ 000123 caller_level rcp_pre_claim_ 000124 rcpd_ptr rcp_pre_claim_ 000126 rcs_ptr rcp_pre_claim_ 000146 wakeup_buf ACCOUNT_WAKEUP 000150 auto_rcpamsg ACCOUNT_WAKEUP THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. admin_gate_$syserr cu_$level_get cu_$level_set get_ring_ hcs_$wakeup rcp_lock_$lock rcp_lock_$unlock rcp_match_user_name_ rcp_pointers_$com_seg rcp_pointers_$data request_id_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badcall error_table_$noentry LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 22 000060 101 000100 102 000103 103 000110 105 000114 107 000122 110 000144 112 000162 113 000171 115 000200 118 000211 120 000224 128 000226 130 000227 131 000237 134 000255 137 000276 138 000300 140 000316 143 000324 146 000400 148 000402 149 000413 152 000437 155 000460 156 000462 157 000505 160 000552 162 000554 164 000563 166 000565 167 000576 168 000605 170 000606 172 000612 173 000615 175 000616 177 000622 178 000626 180 000627 194 000631 196 000633 197 000637 198 000641 199 000644 201 000650 202 000652 205 000673 207 000674 210 000702 211 000713 213 000723 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved