lkml.org 
[lkml]   [2023]   [Feb]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 10/14] perf kvm: Polish sorting key
    Date
    Since histograms supports sorting, the tool doesn't need to maintain the
    mapping between the sorting keys and the corresponding comparison
    callbacks, therefore, this patch removes structure kvm_event_key.

    But we still need to validate the sorting key, this patch uses an array
    for sorting keys and renames function select_key() to is_valid_key()
    to validate the sorting key passed by user.

    Signed-off-by: Leo Yan <leo.yan@linaro.org>
    Reviewed-by: James Clark <james.clark@arm.com>
    ---
    tools/perf/builtin-kvm.c | 27 +++++++++------------------
    tools/perf/util/kvm-stat.h | 8 --------
    2 files changed, 9 insertions(+), 26 deletions(-)

    diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
    index 32dc697ff707..741ba65bf092 100644
    --- a/tools/perf/builtin-kvm.c
    +++ b/tools/perf/builtin-kvm.c
    @@ -76,15 +76,6 @@ COMPARE_EVENT_KEY(min, stats.min);
    COMPARE_EVENT_KEY(count, stats.n);
    COMPARE_EVENT_KEY(mean, stats.mean);

    -#define DEF_SORT_NAME_KEY(name, compare_key) \
    - { #name, cmp_event_ ## compare_key }
    -
    -static struct kvm_event_key keys[] = {
    - DEF_SORT_NAME_KEY(sample, count),
    - DEF_SORT_NAME_KEY(time, mean),
    - { NULL, NULL }
    -};
    -
    struct kvm_hists {
    struct hists hists;
    struct perf_hpp_list list;
    @@ -766,18 +757,18 @@ static bool handle_kvm_event(struct perf_kvm_stat *kvm,
    return true;
    }

    -static bool select_key(struct perf_kvm_stat *kvm)
    +static bool is_valid_key(struct perf_kvm_stat *kvm)
    {
    + const char *key_array[] = {
    + "sample", "time", "max_t", "min_t", "mean_t",
    + };
    int i;

    - for (i = 0; keys[i].name; i++) {
    - if (!strcmp(keys[i].name, kvm->sort_key)) {
    - kvm->compare = keys[i].key;
    + for (i = 0; ARRAY_SIZE(key_array); i++)
    + if (!strcmp(key_array[i], kvm->sort_key))
    return true;
    - }
    - }

    - pr_err("Unknown compare key:%s\n", kvm->sort_key);
    + pr_err("Unsupported key: %s\n", kvm->sort_key);
    return false;
    }

    @@ -1201,7 +1192,7 @@ static int kvm_events_live_report(struct perf_kvm_stat *kvm)
    return ret;

    if (!verify_vcpu(kvm->trace_vcpu) ||
    - !select_key(kvm) ||
    + !is_valid_key(kvm) ||
    !register_kvm_events_ops(kvm)) {
    goto out;
    }
    @@ -1395,7 +1386,7 @@ static int kvm_events_report_vcpu(struct perf_kvm_stat *kvm)
    if (!verify_vcpu(vcpu))
    goto exit;

    - if (!select_key(kvm))
    + if (!is_valid_key(kvm))
    goto exit;

    if (!register_kvm_events_ops(kvm))
    diff --git a/tools/perf/util/kvm-stat.h b/tools/perf/util/kvm-stat.h
    index c38d320c7cbe..a8e919ca59f4 100644
    --- a/tools/perf/util/kvm-stat.h
    +++ b/tools/perf/util/kvm-stat.h
    @@ -43,13 +43,6 @@ struct kvm_event {
    struct hist_entry he;
    };

    -typedef int (*key_cmp_fun)(struct kvm_event*, struct kvm_event*, int);
    -
    -struct kvm_event_key {
    - const char *name;
    - key_cmp_fun key;
    -};
    -
    struct child_event_ops {
    void (*get_key)(struct evsel *evsel,
    struct perf_sample *sample,
    @@ -92,7 +85,6 @@ struct perf_kvm_stat {
    const char *exit_reasons_isa;

    struct kvm_events_ops *events_ops;
    - key_cmp_fun compare;

    u64 total_time;
    u64 total_count;
    --
    2.34.1
    \
     
     \ /
      Last update: 2023-03-27 00:38    [W:4.168 / U:0.944 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site