
?? RIGHT := 110 ??
?? NEWTITLE := 'Inject CPU Fault' ??
MODULE mtm$system_helper_r3;

{ PURPOSE:
{   This module contains the procedures to inject various hardware faults to aid
{   in testing the dual cpu up/down switching.
{

?? NEWTITLE := 'Global Declarations Referenced by This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??

*copyc mtp$inject_cpu_fault
*copyc osp$fetch_system_constant
*copyc jmp$system_job
*copyc jme$must_be_system_job
*copyc oss$job_paged_literal
?? POP ??
*copyc clp$evaluate_parameters
*copyc clp$get_parameter_list_text
*copyc ost$processor_id
*copyc osp$set_status_abnormal


?? OLDTITLE ??
?? NEWTITLE := 'mtp$system_helper_r3', EJECT ??

{ PURPOSE:
{   This procedure causes a false DUE limit.

  PROCEDURE [XDCL,#GATE] mtp$system_helper_r3
    (    processor_id: ost$processor_id;
         VAR status: ost$status);


    VAR
      enable_fault_injection_index: integer,
      enable_fault_injection_name: ost$name,
      enable_fault_injection_value: integer,
      program_parameters_seq_p: ^pmt$program_parameters;

    status.normal := TRUE;

    {  Ensure that task is executing within a system job.

    IF NOT jmp$system_job () THEN
{     osp$set_status_abnormal ('JM', jme$must_be_system_job, 'mtp$inject_hardware_fault', status);
{     RETURN;
    IFEND;

    enable_fault_injection_name := 'ENABLE_FAULT_INJECTION';
    osp$fetch_system_constant (enable_fault_injection_name, enable_fault_injection_index,
          enable_fault_injection_value, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;
    IF enable_fault_injection_value = 0 THEN
 {    osp$set_status_abnormal ('SY', 0, 'Enable_fault_injection has not been selected.', status);
 {    RETURN;
    IFEND;
        status.normal := TRUE;

        mtp$inject_cpu_fault (processor_id,status);


  PROCEND mtp$system_helper_r3;

MODEND mtm$system_helper_r3;

