Skip to content

Commit 9a32bd9

Browse files
author
Peter Zijlstra
committed
perf: Extract a few helpers
The context time update code is repeated verbatim a few times. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by: Kan Liang <kan.liang@linux.intel.com> Reviewed-by: Namhyung Kim <namhyung@kernel.org> Link: https://lore.kernel.org/r/20240807115550.031212518@infradead.org
1 parent 2d17cf1 commit 9a32bd9

1 file changed

Lines changed: 22 additions & 17 deletions

File tree

kernel/events/core.c

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2330,6 +2330,24 @@ group_sched_out(struct perf_event *group_event, struct perf_event_context *ctx)
23302330
event_sched_out(event, ctx);
23312331
}
23322332

2333+
static inline void
2334+
ctx_time_update(struct perf_cpu_context *cpuctx, struct perf_event_context *ctx)
2335+
{
2336+
if (ctx->is_active & EVENT_TIME) {
2337+
update_context_time(ctx);
2338+
update_cgrp_time_from_cpuctx(cpuctx, false);
2339+
}
2340+
}
2341+
2342+
static inline void
2343+
ctx_time_update_event(struct perf_event_context *ctx, struct perf_event *event)
2344+
{
2345+
if (ctx->is_active & EVENT_TIME) {
2346+
update_context_time(ctx);
2347+
update_cgrp_time_from_event(event);
2348+
}
2349+
}
2350+
23332351
#define DETACH_GROUP 0x01UL
23342352
#define DETACH_CHILD 0x02UL
23352353
#define DETACH_DEAD 0x04UL
@@ -2349,10 +2367,7 @@ __perf_remove_from_context(struct perf_event *event,
23492367
struct perf_event_pmu_context *pmu_ctx = event->pmu_ctx;
23502368
unsigned long flags = (unsigned long)info;
23512369

2352-
if (ctx->is_active & EVENT_TIME) {
2353-
update_context_time(ctx);
2354-
update_cgrp_time_from_cpuctx(cpuctx, false);
2355-
}
2370+
ctx_time_update(cpuctx, ctx);
23562371

23572372
/*
23582373
* Ensure event_sched_out() switches to OFF, at the very least
@@ -2437,12 +2452,8 @@ static void __perf_event_disable(struct perf_event *event,
24372452
if (event->state < PERF_EVENT_STATE_INACTIVE)
24382453
return;
24392454

2440-
if (ctx->is_active & EVENT_TIME) {
2441-
update_context_time(ctx);
2442-
update_cgrp_time_from_event(event);
2443-
}
2444-
24452455
perf_pmu_disable(event->pmu_ctx->pmu);
2456+
ctx_time_update_event(ctx, event);
24462457

24472458
if (event == event->group_leader)
24482459
group_sched_out(event, ctx);
@@ -4529,10 +4540,7 @@ static void __perf_event_read(void *info)
45294540
return;
45304541

45314542
raw_spin_lock(&ctx->lock);
4532-
if (ctx->is_active & EVENT_TIME) {
4533-
update_context_time(ctx);
4534-
update_cgrp_time_from_event(event);
4535-
}
4543+
ctx_time_update_event(ctx, event);
45364544

45374545
perf_event_update_time(event);
45384546
if (data->group)
@@ -4732,10 +4740,7 @@ static int perf_event_read(struct perf_event *event, bool group)
47324740
* May read while context is not active (e.g., thread is
47334741
* blocked), in that case we cannot update context time
47344742
*/
4735-
if (ctx->is_active & EVENT_TIME) {
4736-
update_context_time(ctx);
4737-
update_cgrp_time_from_event(event);
4738-
}
4743+
ctx_time_update_event(ctx, event);
47394744

47404745
perf_event_update_time(event);
47414746
if (group)

0 commit comments

Comments
 (0)