Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\events\core.c Create Date:2022-07-28 13:31:56
Last Modify:2022-05-20 07:50:19 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:Get the perf_event_context for a task and lock it.* This has to cope with with the fact that until it is locked,* the context could get moved to another task.

Proto:static struct perf_event_context *perf_lock_task_context(struct task_struct *task, int ctxn, unsigned long *flags)

Type:struct perf_event_context

Parameter:

TypeParameterName
struct task_struct *task
intctxn
unsigned long *flags
1373  retry :
1383  local_irq_save( * flags)
1384  _read_lock() - mark the beginning of an RCU read-side critical section* When synchronize_rcu() is invoked on one CPU while other CPUs* are within RCU read-side critical sections, then the* synchronize_rcu() is guaranteed to block until after all the other
1385  ctx = fetch RCU-protected pointer for dereferencing(perf_event_ctxp[ctxn])
1386  If ctx Then
1397  raw_spin_lock( & Protect the states of the events in the list,* nr_active, and the list:)
1402  Go to retry
1408  ctx = NULL
1409  Else
1410  WARN_ON_ONCE(task != task)
1413  _read_unlock() - marks the end of an RCU read-side critical section.* In most situations, rcu_read_unlock() is immune from deadlock.* However, in kernels built with CONFIG_RCU_BOOST, rcu_read_unlock()
1414  If Not ctx Then local_irq_restore( * flags)
1416  Return ctx
Caller
NameDescribe
perf_pin_task_contextGet the context for a task and increment its pin_count so it* can't get swapped to another task. This also increments its* reference count so that the context can't get freed.
find_get_contextReturns a matching context with refcount and pincount.