linux/tools/perf/tests/evsel-tp-sched.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2#include <linux/err.h>
   3#include <traceevent/event-parse.h>
   4#include "evsel.h"
   5#include "tests.h"
   6#include "debug.h"
   7
   8static int evsel__test_field(struct evsel *evsel, const char *name, int size, bool should_be_signed)
   9{
  10        struct tep_format_field *field = evsel__field(evsel, name);
  11        int is_signed;
  12        int ret = 0;
  13
  14        if (field == NULL) {
  15                pr_debug("%s: \"%s\" field not found!\n", evsel->name, name);
  16                return -1;
  17        }
  18
  19        is_signed = !!(field->flags & TEP_FIELD_IS_SIGNED);
  20        if (should_be_signed && !is_signed) {
  21                pr_debug("%s: \"%s\" signedness(%d) is wrong, should be %d\n",
  22                         evsel->name, name, is_signed, should_be_signed);
  23                ret = -1;
  24        }
  25
  26        if (field->size != size) {
  27                pr_debug("%s: \"%s\" size (%d) should be %d!\n",
  28                         evsel->name, name, field->size, size);
  29                ret = -1;
  30        }
  31
  32        return ret;
  33}
  34
  35int test__perf_evsel__tp_sched_test(struct test *test __maybe_unused, int subtest __maybe_unused)
  36{
  37        struct evsel *evsel = evsel__newtp("sched", "sched_switch");
  38        int ret = 0;
  39
  40        if (IS_ERR(evsel)) {
  41                pr_debug("evsel__newtp failed with %ld\n", PTR_ERR(evsel));
  42                return -1;
  43        }
  44
  45        if (evsel__test_field(evsel, "prev_comm", 16, false))
  46                ret = -1;
  47
  48        if (evsel__test_field(evsel, "prev_pid", 4, true))
  49                ret = -1;
  50
  51        if (evsel__test_field(evsel, "prev_prio", 4, true))
  52                ret = -1;
  53
  54        if (evsel__test_field(evsel, "prev_state", sizeof(long), true))
  55                ret = -1;
  56
  57        if (evsel__test_field(evsel, "next_comm", 16, false))
  58                ret = -1;
  59
  60        if (evsel__test_field(evsel, "next_pid", 4, true))
  61                ret = -1;
  62
  63        if (evsel__test_field(evsel, "next_prio", 4, true))
  64                ret = -1;
  65
  66        evsel__delete(evsel);
  67
  68        evsel = evsel__newtp("sched", "sched_wakeup");
  69
  70        if (IS_ERR(evsel)) {
  71                pr_debug("evsel__newtp failed with %ld\n", PTR_ERR(evsel));
  72                return -1;
  73        }
  74
  75        if (evsel__test_field(evsel, "comm", 16, false))
  76                ret = -1;
  77
  78        if (evsel__test_field(evsel, "pid", 4, true))
  79                ret = -1;
  80
  81        if (evsel__test_field(evsel, "prio", 4, true))
  82                ret = -1;
  83
  84        if (evsel__test_field(evsel, "target_cpu", 4, true))
  85                ret = -1;
  86
  87        evsel__delete(evsel);
  88        return ret;
  89}
  90