ScEpTIC.emulator.intermittent_executor package

Submodules

ScEpTIC.emulator.intermittent_executor.anomalies module

class ScEpTIC.emulator.intermittent_executor.anomalies.BaselineDataAnomaly(cell_address, checkpoint_pc, causing_pc)

Bases: object

class ScEpTIC.emulator.intermittent_executor.anomalies.BaselineInputAnomaly(input_name, first_checkpoint_pc, second_checkpoint_pc, required_access_model, shown_access_model)

Bases: object

class ScEpTIC.emulator.intermittent_executor.anomalies.DataAnomaly(cell, current_pc, read_clock, is_false_positive)

Bases: object

Representation of a data anomaly

get_type()

Returns the type of the data anomaly.

raise_exception()

Raises an exception to signal the anomaly.

class ScEpTIC.emulator.intermittent_executor.anomalies.InputPolicyAnomaly(checkpoint_pc, access_clock, access_pc, checkpoint_clock, input_name, measured_consistency_model, imposed_consistency_model)

Bases: object

Represents an Input Policy Anomaly

get_type()
class ScEpTIC.emulator.intermittent_executor.anomalies.LinearAnomaly(consumer_op, producer_op, consumer, producer, false_positive)

Bases: object

Represents a Base anomaly for the DataLinearInterruptionManager

add_element(anomaly)

Add an element to the anomaly element list

add_other_pc(other_anomaly)

Add another call path that causes the same anomaly

get_consumer_pc()

Returns a textual representation of the consumer program counter

get_debug_data_element()
get_element()

Return the only element of the newly found anomaly

get_producer_pc()

Returns a textual representation of the producer program counter

heap_memory_traces = ['allocation', 'deallocation']
class ScEpTIC.emulator.intermittent_executor.anomalies.MemoryAccessAnomaly(generating_pc, generating_clock, current_pc, current_clock, checkpoint_pc, message)

Bases: object

get_type()
class ScEpTIC.emulator.intermittent_executor.anomalies.MemoryMapAnomaly(cell, current_pc, read_clock, is_false_positive)

Bases: ScEpTIC.emulator.intermittent_executor.anomalies.DataAnomaly

Representation of a Memory Map anomaly

get_type()

Returns the type of the data anomaly.

class ScEpTIC.emulator.intermittent_executor.anomalies.OutputAnomaly(checkpoint_pc, access_clock, access_pc, checkpoint_clock, output_name, measured_consistency_model, imposed_consistency_model)

Bases: object

Represents an output anomaly

get_type()
class ScEpTIC.emulator.intermittent_executor.anomalies.SingleStackARAnomaly(dump_cell, current_cell, element, is_false_positive)

Bases: object

Represents a single element of a Stack Activation Record anomaly.

class ScEpTIC.emulator.intermittent_executor.anomalies.StackARAnomaly(anomalies, checkpoint_pc, checkpoint_clock, reset_pc)

Bases: object

get_type()
class ScEpTIC.emulator.intermittent_executor.anomalies.WARAnomaly(cell, current_pc, read_clock, is_false_positive)

Bases: ScEpTIC.emulator.intermittent_executor.anomalies.DataAnomaly

Representation of a Write After Read anomaly

get_type()

Returns the type of the data anomaly.

ScEpTIC.emulator.intermittent_executor.checkpoint_manager module

class ScEpTIC.emulator.intermittent_executor.checkpoint_manager.CheckpointManager(config, vmstate)

Bases: object

Manages checkpoint and restore operations

do_checkpoint()

Performs a checkpoint of the selected elements and dumps the whole vm state. The saved checkpoint is the one restored by the do_restore routine. The vm state is saved for comparisons with the obtained status after a restore.

do_restore()

Restores the previously taken checkpoint.

get_simple_dump()

Returns a dump of register file, stack, heap and gst.

get_vm_state_diff()

Compares the vm state with the vm dump taken during the checkpoint. It returns a list containing the memory section names that differs.

get_vm_state_diff_elements()

Returns a dictionary containing the differences for each memory component between the current state and the saved dump.

process_checkpoint_routines(functions, declarations)

If dynamic checkpoint mechanisms: removes all references to the checkpoint and restore routines (if any). If static checkpoint mechanisms: removes all references to restore routine and removes target from checkpoint routine calls.

NB: Checkpoint routine is considered just as a marker to verify when interrupt and test the execution.

reset()

Resets the saved dump and checkpoint

restore_dump()

Restores the previously taken dump, to make memory consistent again.

static validate_configuration(configuration)

Validates the checkpoint configuration. If an error is found, a ConfigurationException is raised.

ScEpTIC.emulator.intermittent_executor.profiling module

class ScEpTIC.emulator.intermittent_executor.profiling.ProfilingChangeInputVal(name, value)

Bases: ScEpTIC.AST.elements.instruction.Instruction

Changes input value at runtime. Used as marker by the corresponding interruption manager.

get_uses()

Returns a list containing the names of the registers used by this instruction. (used by register allocation)

get_val()
name = 'sceptic_change_input'
replace_reg_name(old_reg_name, new_reg_name)

Skeleton. Replaces the name of a register used by the instruction with a new one. (used by register allocation)

tick_count = 0
class ScEpTIC.emulator.intermittent_executor.profiling.ProfilingLog(name, variable)

Bases: ScEpTIC.AST.elements.instruction.Instruction

Profiling log operation for profiling purposes. Used as marker by the corresponding interruption manager.

get_run_info(run_id)
get_uses()

Returns a list containing the names of the registers used by this instruction. (used by register allocation)

get_val()
name = 'sceptic_log'
power_failures = None
replace_reg_name(old_reg_name, new_reg_name)

Skeleton. Replaces the name of a register used by the instruction with a new one. (used by register allocation)

tick_count = 0
tracking = None
class ScEpTIC.emulator.intermittent_executor.profiling.ProfilingReset(mode, value)

Bases: ScEpTIC.AST.elements.instruction.Instruction

Reset operation for profiling purposes. Used as marker by the corresponding interruption manager.

evaluate_reset_condition(power_failures)
get_uses()

Returns a list containing the names of the registers used by this instruction. (used by register allocation)

get_val()
name = 'sceptic_reset'
replace_reg_name(old_reg_name, new_reg_name)

Skeleton. Replaces the name of a register used by the instruction with a new one. (used by register allocation)

class ScEpTIC.emulator.intermittent_executor.profiling.RunInfo(io_type, pc, global_clock, run_id, function_name, io_name, io_value)

Bases: object

ScEpTIC.emulator.intermittent_executor.profiling.pre_parse_profiling_log(text, ir_function_prefix)

Pre parse profiling log, so to avoid errors due to the lack of profiling_log definition in the C source code.

ScEpTIC.emulator.intermittent_executor.profiling.process_profiling_calls(ir_function_prefix, functions, declarations)

Processes the calls to profiling operations in each function.

Module contents