mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 10:13:56 -06:00
trace: remove global 'uint16 dstate[]' array
Instead of having a global dstate array, declare a single 'uint16 TRACE_${EVENT_NAME}_DSTATE' variable for each trace event. Record a pointer to this variable in the TraceEvent struct too. By turning trace_event_get_state_dynamic_by_id into a macro, this still hits the fast path, and cache affinity is ensured by declaring all the uint16 vars adjacent to each other. Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Lluís Vilanova <vilanova@ac.upc.edu> Signed-off-by: Daniel P. Berrange <berrange@redhat.com> Message-id: 1475588159-30598-7-git-send-email-berrange@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
599ab2f241
commit
9397740244
8 changed files with 37 additions and 39 deletions
|
@ -18,22 +18,21 @@ void trace_event_set_state_dynamic_init(TraceEvent *ev, bool state)
|
|||
|
||||
void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
|
||||
{
|
||||
TraceEventID id;
|
||||
bool state_pre;
|
||||
assert(trace_event_get_state_static(ev));
|
||||
id = trace_event_get_id(ev);
|
||||
|
||||
/*
|
||||
* We ignore the "vcpu" property here, since there's no target code. Then
|
||||
* dstate can only be 1 or 0.
|
||||
*/
|
||||
state_pre = trace_events_dstate[id];
|
||||
state_pre = *(ev->dstate);
|
||||
if (state_pre != state) {
|
||||
if (state) {
|
||||
trace_events_enabled_count++;
|
||||
trace_events_dstate[id] = 1;
|
||||
*(ev->dstate) = 1;
|
||||
} else {
|
||||
trace_events_enabled_count--;
|
||||
trace_events_dstate[id] = 0;
|
||||
*(ev->dstate) = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue