evsel-tp-sched.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include <traceevent/event-parse.h>
  2. #include "evsel.h"
  3. #include "tests.h"
  4. #include "debug.h"
  5. static int perf_evsel__test_field(struct perf_evsel *evsel, const char *name,
  6. int size, bool should_be_signed)
  7. {
  8. struct format_field *field = perf_evsel__field(evsel, name);
  9. int is_signed;
  10. int ret = 0;
  11. if (field == NULL) {
  12. pr_debug("%s: \"%s\" field not found!\n", evsel->name, name);
  13. return -1;
  14. }
  15. is_signed = !!(field->flags | FIELD_IS_SIGNED);
  16. if (should_be_signed && !is_signed) {
  17. pr_debug("%s: \"%s\" signedness(%d) is wrong, should be %d\n",
  18. evsel->name, name, is_signed, should_be_signed);
  19. ret = -1;
  20. }
  21. if (field->size != size) {
  22. pr_debug("%s: \"%s\" size (%d) should be %d!\n",
  23. evsel->name, name, field->size, size);
  24. ret = -1;
  25. }
  26. return ret;
  27. }
  28. int test__perf_evsel__tp_sched_test(void)
  29. {
  30. struct perf_evsel *evsel = perf_evsel__newtp("sched", "sched_switch");
  31. int ret = 0;
  32. if (evsel == NULL) {
  33. pr_debug("perf_evsel__new\n");
  34. return -1;
  35. }
  36. if (perf_evsel__test_field(evsel, "prev_comm", 16, true))
  37. ret = -1;
  38. if (perf_evsel__test_field(evsel, "prev_pid", 4, true))
  39. ret = -1;
  40. if (perf_evsel__test_field(evsel, "prev_prio", 4, true))
  41. ret = -1;
  42. if (perf_evsel__test_field(evsel, "prev_state", sizeof(long), true))
  43. ret = -1;
  44. if (perf_evsel__test_field(evsel, "next_comm", 16, true))
  45. ret = -1;
  46. if (perf_evsel__test_field(evsel, "next_pid", 4, true))
  47. ret = -1;
  48. if (perf_evsel__test_field(evsel, "next_prio", 4, true))
  49. ret = -1;
  50. perf_evsel__delete(evsel);
  51. evsel = perf_evsel__newtp("sched", "sched_wakeup");
  52. if (perf_evsel__test_field(evsel, "comm", 16, true))
  53. ret = -1;
  54. if (perf_evsel__test_field(evsel, "pid", 4, true))
  55. ret = -1;
  56. if (perf_evsel__test_field(evsel, "prio", 4, true))
  57. ret = -1;
  58. if (perf_evsel__test_field(evsel, "target_cpu", 4, true))
  59. ret = -1;
  60. return ret;
  61. }