函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\trace\trace_irqsoff.c Create Date:2022-07-27 13:16:04
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:check_critical_timing

函数原型:static void check_critical_timing(struct trace_array *tr, struct trace_array_cpu *data, unsigned long parent_ip, int cpu)

返回类型:void

参数:

类型参数名称
struct trace_array *tr
struct trace_array_cpu *data
unsigned longparent_ip
intcpu
327  T0等于preempt_timestamp
328  T1等于ftrace_now(cpu)
329  delta等于T1T0
331  local_save_flags(flags)
333  pc等于抢占计数值
335  如果非Should this new latency be reported/recorded?则转到:out
338  raw_spin_lock_irqsave( & max_trace_lock, flags)
341  如果非Should this new latency be reported/recorded?则转到:out_unlock
344  __trace_function(tr, CALLER_ADDR0, parent_ip, flags, pc)
346  __trace_stack(tr, flags, 5, pc)
348  如果critical_sequence不等于Sequence count - we record it when starting a measurement and* skip the latency if the sequence has changed - some other section* did a maximum and could disturb our measurement with serial console* printouts, etc则转到:out_unlock
351  critical_end等于parent_ip
353  如果此条件成立可能性大(为编译器优化)(!is_tracing_stopped())则
354  max_latency等于delta
355  update_max_tr_single(tr, 当前进程, cpu)
358  Sequence count - we record it when starting a measurement and* skip the latency if the sequence has changed - some other section* did a maximum and could disturb our measurement with serial console* printouts, etc自加
360  out_unlock :
361  raw_spin_unlock_irqrestore( & max_trace_lock, flags)
363  out :
364  critical_sequence等于Sequence count - we record it when starting a measurement and* skip the latency if the sequence has changed - some other section* did a maximum and could disturb our measurement with serial console* printouts, etc
365  preempt_timestamp等于ftrace_now(cpu)
366  __trace_function(tr, CALLER_ADDR0, parent_ip, flags, pc)
调用者
名称描述
stop_critical_timing