[PATCH v4 04/16] perf kvm: Use subtraction for comparison metrics

From: Leo Yan
Date: Mon Mar 13 2023 - 07:41:35 EST


Currently the metrics comparison uses greater operator (>), it returns
the boolean value (0 or 1).

This patch changes to use subtraction as comparison result, which can
be used by histograms sorting. Since the subtraction result is u64
type, we change the function return type from int to int64_t to avoid
overflow.

Signed-off-by: Leo Yan <leo.yan@xxxxxxxxxx>
---
tools/perf/builtin-kvm.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
index 62c097a37da9..4e9519390da6 100644
--- a/tools/perf/builtin-kvm.c
+++ b/tools/perf/builtin-kvm.c
@@ -63,10 +63,10 @@ static u64 get_event_ ##func(struct kvm_event *event, int vcpu) \

#define COMPARE_EVENT_KEY(func, field) \
GET_EVENT_KEY(func, field) \
-static int cmp_event_ ## func(struct kvm_event *one, \
+static int64_t cmp_event_ ## func(struct kvm_event *one, \
struct kvm_event *two, int vcpu) \
{ \
- return get_event_ ##func(one, vcpu) > \
+ return get_event_ ##func(one, vcpu) - \
get_event_ ##func(two, vcpu); \
}

@@ -523,7 +523,7 @@ static void insert_to_result(struct rb_root *result, struct kvm_event *event,
p = container_of(*rb, struct kvm_event, rb);
parent = *rb;

- if (bigger(event, p, vcpu))
+ if (bigger(event, p, vcpu) > 0)
rb = &(*rb)->rb_left;
else
rb = &(*rb)->rb_right;
--
2.34.1