函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\smp.c Create Date:2022-07-27 11:56:14
Last Modify:2020-03-17 15:12:54 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:smp_call_function_many(): Run a function on a set of other CPUs

函数原型:void smp_call_function_many(const struct cpumask *mask, smp_call_func_t func, void *info, bool wait)

返回类型:void

参数:

类型参数名称
const struct cpumask *mask
smp_call_func_tfunc
void *info
boolwait
416  this_cpu等于当前cpu ID()
424  WARN_ON_ONCE(cpu_online(this_cpu) && 已禁止中断() && !Low level drivers may need that to know if they can schedule in* their unblank() callback or not. So let's export it. && !early_boot_irqs_disabled)
433  WARN_ON_ONCE(!in_task())
436  cpu等于cpumask_first_and - return the first cpu from *srcp1 & *srcp2*@src1p: the first input*@src2p: the second input* Returns >= nr_cpu_ids if no cpus set in both. See also cpumask_next_and().(mask, cpu_online_mask)
437  如果cpu恒等于this_cpucpu等于pumask_next_and - get the next cpu in *src1p & *src2p*@n: the cpu prior to the place to search (ie. return will be > @n)*@src1p: the first cpumask pointer*@src2p: the second cpumask pointer* Returns >= nr_cpu_ids if no further cpus set in both.
441  如果cpu大于等于nr_cpu_ids则返回
445  next_cpu等于pumask_next_and - get the next cpu in *src1p & *src2p*@n: the cpu prior to the place to search (ie. return will be > @n)*@src1p: the first cpumask pointer*@src2p: the second cpumask pointer* Returns >= nr_cpu_ids if no further cpus set in both.
446  如果next_cpu恒等于this_cpunext_cpu等于pumask_next_and - get the next cpu in *src1p & *src2p*@n: the cpu prior to the place to search (ie. return will be > @n)*@src1p: the first cpumask pointer*@src2p: the second cpumask pointer* Returns >= nr_cpu_ids if no further cpus set in both.
450  如果next_cpu大于等于nr_cpu_ids
451  smp_call_function_single - Run a function on a specific CPU*@func: The function to run. This must be fast and non-blocking.*@info: An arbitrary pointer to pass to the function.*@wait: If true, wait until function has completed on other CPUs.
452  返回
455  cfd等于this_cpu_ptr( & cfd_data)
457  pumask_and - *dstp = *src1p & *src2p*@dstp: the cpumask result*@src1p: the first input*@src2p: the second input* If *@dstp is empty, returns 0, else returns 1
458  __cpumask_clear_cpu(this_cpu, cpumask)
461  如果此条件成立可能性小(为编译器优化)(!pumask_weight - Count of bits in *srcp*@srcp: the cpumask to count bits (< nr_cpu_ids) in.)则返回
464  清空全部CPU信息
466  csd等于per_cpu_ptr(csd, cpu)
468  csd_lock(csd)
469  如果waitflags或等于CSD_FLAG_SYNCHRONOUS
471  func等于func
472  info等于info
473  如果添加列表项__cpumask_set_cpu(cpu, cpumask_ipi)
478  arch_send_call_function_ipi_mask(cpumask_ipi)
480  如果wait
484  csd等于per_cpu_ptr(csd, cpu)
485  sd_lock/csd_unlock used to serialize access to per-cpu csd resources* For non-synchronous ipi calls the csd can still be in use by the* previous function call. For multi-cpu calls its even more interesting
调用者
名称描述
update_closid_rmidUpdate the PGR_ASSOC MSR on all cpus in @cpu_mask,* Per task closids/rmids must have been set up before calling this function.
set_cache_qos_cfg
reset_all_ctrls
update_domains
membarrier_global_expedited
membarrier_private_expedited
sync_runqueues_membarrier_state
smp_call_functionsmp_call_function(): Run a function on all other CPUs.*@func: The function to run. This must be fast and non-blocking.*@info: An arbitrary pointer to pass to the function.*@wait: If true, wait (atomically) until function has completed* on other CPUs.
on_each_cpu_mask_each_cpu_mask(): Run a function on processors specified by* cpumask, which may include the local processor.*@mask: The set of cpus to run on (only runs on online subset).*@func: The function to run. This must be fast and non-blocking.
trace_buffered_event_disablerace_buffered_event_disable - disable buffering events* When a filter is removed, it is faster to not use the buffered* events, and to commit directly into the ring buffer. Free up* the temp buffers when there are no more users. This requires