• Sebastian Andrzej Siewior's avatar
    tracing: Merge irqflags + preempt counter. · 36590c50
    Sebastian Andrzej Siewior authored
    The state of the interrupts (irqflags) and the preemption counter are
    both passed down to tracing_generic_entry_update(). Only one bit of
    irqflags is actually required: The on/off state. The complete 32bit
    of the preemption counter isn't needed. Just whether of the upper bits
    (softirq, hardirq and NMI) are set and the preemption depth is needed.
    
    The irqflags and the preemption counter could be evaluated early and the
    information stored in an integer `trace_ctx'.
    tracing_generic_entry_update() would use the upper bits as the
    TRACE_FLAG_* and the lower 8bit as the disabled-preemption depth
    (considering that one must be substracted from the counter in one
    special cases).
    
    The actual preemption value is not used except for the tracing record.
    The `irqflags' variable is mostly used only for the tracing record. An
    exception here is for instance wakeup_tracer_call() or
    probe_wakeup_sched_switch() which explicilty disable interrupts and use
    that `irqflags' to save (and ...
    36590c50
trace_functions_graph.c 32.5 KB