perf kwork: Add kwork
and src_type
to work_init() for 'struct kwork_class'
To support different types of reports, two parameters `struct perf_kwork * kwork` and `enum kwork_trace_type src_type` are added to work_init() of struct kwork_class for initialization in different scenarios. No functional change intended. Reviewed-by: Ian Rogers <irogers@google.com> Signed-off-by: Yang Jihong <yangjihong1@huawei.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@amd.com> Cc: Sandipan Das <sandipan.das@amd.com> Link: https://lore.kernel.org/r/20230812084917.169338-5-yangjihong1@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
0c526579a4
commit
95064b3352
@ -398,7 +398,7 @@ static int work_push_atom(struct perf_kwork *kwork,
|
||||
struct kwork_work *work, key;
|
||||
|
||||
BUG_ON(class->work_init == NULL);
|
||||
class->work_init(class, &key, evsel, sample, machine);
|
||||
class->work_init(kwork, class, &key, src_type, evsel, sample, machine);
|
||||
|
||||
atom = atom_new(kwork, sample);
|
||||
if (atom == NULL)
|
||||
@ -445,7 +445,7 @@ static struct kwork_atom *work_pop_atom(struct perf_kwork *kwork,
|
||||
struct kwork_work *work, key;
|
||||
|
||||
BUG_ON(class->work_init == NULL);
|
||||
class->work_init(class, &key, evsel, sample, machine);
|
||||
class->work_init(kwork, class, &key, src_type, evsel, sample, machine);
|
||||
|
||||
work = work_findnew(&class->work_root, &key, &kwork->cmp_id);
|
||||
if (ret_work != NULL)
|
||||
@ -821,8 +821,10 @@ static int irq_class_init(struct kwork_class *class,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void irq_work_init(struct kwork_class *class,
|
||||
static void irq_work_init(struct perf_kwork *kwork __maybe_unused,
|
||||
struct kwork_class *class,
|
||||
struct kwork_work *work,
|
||||
enum kwork_trace_type src_type __maybe_unused,
|
||||
struct evsel *evsel,
|
||||
struct perf_sample *sample,
|
||||
struct machine *machine __maybe_unused)
|
||||
@ -940,8 +942,10 @@ static char *evsel__softirq_name(struct evsel *evsel, u64 num)
|
||||
return name;
|
||||
}
|
||||
|
||||
static void softirq_work_init(struct kwork_class *class,
|
||||
static void softirq_work_init(struct perf_kwork *kwork __maybe_unused,
|
||||
struct kwork_class *class,
|
||||
struct kwork_work *work,
|
||||
enum kwork_trace_type src_type __maybe_unused,
|
||||
struct evsel *evsel,
|
||||
struct perf_sample *sample,
|
||||
struct machine *machine __maybe_unused)
|
||||
@ -1031,8 +1035,10 @@ static int workqueue_class_init(struct kwork_class *class,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void workqueue_work_init(struct kwork_class *class,
|
||||
static void workqueue_work_init(struct perf_kwork *kwork __maybe_unused,
|
||||
struct kwork_class *class,
|
||||
struct kwork_work *work,
|
||||
enum kwork_trace_type src_type __maybe_unused,
|
||||
struct evsel *evsel,
|
||||
struct perf_sample *sample,
|
||||
struct machine *machine)
|
||||
|
@ -91,6 +91,7 @@ struct kwork_atom_page {
|
||||
DECLARE_BITMAP(bitmap, NR_ATOM_PER_PAGE);
|
||||
};
|
||||
|
||||
struct perf_kwork;
|
||||
struct kwork_class;
|
||||
struct kwork_work {
|
||||
/*
|
||||
@ -142,8 +143,10 @@ struct kwork_class {
|
||||
int (*class_init)(struct kwork_class *class,
|
||||
struct perf_session *session);
|
||||
|
||||
void (*work_init)(struct kwork_class *class,
|
||||
void (*work_init)(struct perf_kwork *kwork,
|
||||
struct kwork_class *class,
|
||||
struct kwork_work *work,
|
||||
enum kwork_trace_type src_type,
|
||||
struct evsel *evsel,
|
||||
struct perf_sample *sample,
|
||||
struct machine *machine);
|
||||
@ -152,7 +155,6 @@ struct kwork_class {
|
||||
char *buf, int len);
|
||||
};
|
||||
|
||||
struct perf_kwork;
|
||||
struct trace_kwork_handler {
|
||||
int (*raise_event)(struct perf_kwork *kwork,
|
||||
struct kwork_class *class, struct evsel *evsel,
|
||||
|
Loading…
x
Reference in New Issue
Block a user