next_ctx
struct perf_event_context *next_ctx)
next_event = list_first_entry(&next_ctx->event_list,
&next_event->event_entry != &next_ctx->event_list) {
struct perf_event_context *next_ctx;
next_ctx = rcu_dereference(next->perf_event_ctxp);
if (!next_ctx)
next_parent = rcu_dereference(next_ctx->parent_ctx);
if (next_parent == ctx || next_ctx == parent || next_parent == parent) {
raw_spin_lock_nested(&next_ctx->lock, SINGLE_DEPTH_NESTING);
if (context_equiv(ctx, next_ctx)) {
local_read(&next_ctx->nr_no_switch_fast)) {
raw_spin_unlock(&next_ctx->lock);
WRITE_ONCE(next_ctx->task, task);
RCU_INIT_POINTER(task->perf_event_ctxp, next_ctx);
perf_event_sync_stat(ctx, next_ctx);
raw_spin_unlock(&next_ctx->lock);
tctx = next_ctx(tctx);
tctx = next_ctx(tctx);
tctx = next_ctx(tctx);
tctx = next_ctx(tctx);
tctx = next_ctx(tctx);
tctx = next_ctx(tctx);