/* *Preemptionispromisedtobedisabledwhenreturnbit>=0.
*/ static __always_inline int trace_test_and_set_recursion(unsignedlong ip, unsignedlongpip, int start)
{ unsignedint val = READ_ONCE(current->trace_recursion); int bit;
if (trace_warn_on_no_rcu(ip)) return -1;
bit = trace_get_context_bit() + start; if (unlikely(val & (1 << bit))) { /* *Ifaninterruptoccursduringatrace,andanothertrace *happensinthatinterruptbutbeforethepreempt_countis *updatedtoreflectthenewinterruptcontext,thenthis *willthinkarecursionoccurred,andtheeventwillbedropped. *LetasingleinstancehappenviatheTRANSITION_BITto *notdropthoseevents.
*/
bit = TRACE_CTX_TRANSITION + start; if (val & (1 << bit)) {
do_ftrace_record_recursion(ip, pip); return -1;
}
}
val |= 1 << bit;
current->trace_recursion = val;
barrier();
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.0Bemerkung:
(vorverarbeitet am 2026-10-11)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.