SIM_INTERFACE(breakpoint) { void (*insert_breakpoint)(conf_object_t *object, conf_object_t *caller, breakpoint_handle_t handle, access_t access, generic_address_t start, generic_address_t end); void (*remove_breakpoint)(conf_object_t *object, breakpoint_handle_t handle); breakpoint_info_t (*get_breakpoint)(conf_object_t *obj, breakpoint_handle_t handle); }; #define BREAKPOINT_INTERFACE "breakpoint"
The insert_breakpoint function is called when adding a breakpoint on object. The handle identified the breakpoint and is to be used when triggering the breakpoint and when breakpoints are removed. The access parameter specifies the types of accesses that the breakpoint is set for. The breakpoint range is from start to end and includes both ends.
The implementer of this interface should call caller through the
breakpoint_trigger
interface to trigger the breakpoint.
remove_breakpoint should remove the breakpoint and further accesses to the address range should not trigger that breakpoint.
This interface is only to be used by the Simics core. Other uses of breakpoints should go through the available breakpoint API calls such as SIM_breakpoint.