|Home > Iris APIs > Events and trace interface|
All Iris events are handled through this interface.
Most clients only need to call the following functions:
Optionally, events can be enabled or disabled by calling
eventStream_disable(). These functions might provide a performance benefit over
eventStream_destroy() when repeatedly enabling and disabling the same event stream. The client implements the event callback functions
ec_*(), as needed. All other event functions are exotic and deal with ringbuffering events, counter events, and reading the state of an event.
Target instances can expose zero or more event sources. Event sources emit:
INSTevents for each executed instruction.
An instance that produces events is called an event producer, or trace producer. It implements the
An instance that receives event callbacks is called an event consumer, or trace consumer. It must implement the callbacks for the events it requested, for example
Target instances that do not expose any event sources must either return
E_function_not_supported_by_instance for the
event_*() functions, or return an empty list of event sources. In practice, however, all instances that implement Iris interfaces that might generate events, must also implement the event interface to expose these events, and allow clients to receive them. In particular, instances that support the breakpoint interface or the semihosting interface must implement the event interface.