root/tools/perf/tests/evsel-tp-sched.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. perf_evsel__test_field
  2. test__perf_evsel__tp_sched_test

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

/* [<][>][^][v][top][bottom][index][help] */