02/06/84 prepare_mc_restart_ The prepare_mc_restart_ subroutine checks machine conditions for restartability, and makes modifications to the machine conditions (to accomplish user modifications to process execution) before a condition handler returns. The prepare_mc_restart_ subroutine should be called by a condition handler, which was invoked as a result of a hardware-detected condition, if the handler wishes the process to: 1. retry the faulting instruction. 2. skip the faulting instruction and continue. 3. execute some other instruction instead of the faulting instruction and continue. 4. resume execution at some other location in the same program. When a condition handler is invoked for a hardware-detected condition, it is passed a pointer to the machine-conditions data at the time of the fault. If the handler returns, the system attempts to restore these machine conditions and restart the process at the point of interruption encoded in the machine-conditions data. After certain conditions, however, the hardware is unable to restart the processor. In other cases, an attempt to restart always causes the same condition to occur again, because the system software has already exhausted all available recovery possibilities (e.g., disk read errors). Entry points in prepare_mc_restart_: (List is generated by the help command) :Entry: replace: 02/06/84 prepare_mc_restart_$replace Function: modifies machine-conditions data so that the process executes a specified machine instruction, instead of the faulting instruction, and then continues normally. Syntax: declare prepare_mc_restart_$replace entry (ptr, bit(36), fixed bin(35)); call prepare_mc_restart_$replace (mc_ptr, new_ins, code); Arguments: mc_ptr is a pointer to the machine conditions. (Input) The format of the machine conditions is described in the Programmer's Reference Manual. new_ins is the desired substitute machine instruction. (Input) code is a standard status code. If it is nonzero on return, the machine conditions cannot be restarted. (Output) The following codes can be returned: error_table_$badarg an invalid mc_ptr was provided. error_table_$no_restart the machine conditions cannot be restarted. error_table_$bad_ptr the restart location is not accessible. error_table_$useless_restart the same error will occur again if restart is attempted. :Entry: retry: 02/06/84 prepare_mc_restart_$retry Function: prepares the machine conditions for retry at the point of the hardware-detected condition. For example, this operation is appropriate for a linkage error signal, resulting from the absence of a segment, that the condition handler has been able to locate. Syntax: declare prepare_mc_restart_$retry entry (ptr, fixed bin(35)); call prepare_mc_restart_$retry (mc_ptr, code); Arguments: mc_ptr is a pointer to the machine conditions. (Input) The format of the machine conditions is described in the Programmer's Reference Manual. code is a standard status code. If it is nonzero on return, the machine conditions cannot be restarted. (Output) The following codes can be returned: error_table_$badarg an invalid mc_ptr was provided. error_table_$no_restart the machine conditions cannot be restarted. error_table_$bad_ptr the restart location is not accessible. error_table_$useless_restart the same error will occur again if restart is attempted. :Entry: tra: 02/06/84 prepare_mc_restart_$tra Function: modifies machine conditions data so that the process resumes execution, taking its next instruction from a specified location. The instruction transferred to must be in the same segment that caused the fault. Syntax: declare prepare_mc_restart_$tra entry (ptr, ptr, fixed bin(35)); call prepare_mc_restart_$tra (mc_ptr, newp, code); Arguments: mc_ptr is a pointer to the machine conditions. (Input) The format of the machine conditions is described in the Programmer's Reference Manual. newp is used in replacing the instruction counter in the machine conditions. (Input) code is a standard status code. If it is nonzero on return, the machine conditions cannot be restarted. (Output) The following codes can be returned: error_table_$badarg an invalid mc_ptr was provided. error_table_$no_restart the machine conditions cannot be restarted. error_table_$bad_ptr the restart location is not accessible. error_table_$useless_restart the same error will occur again if restart is attempted. ----------------------------------------------------------- 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