On 2023-10-24 at 12:26:24 +0300, Ilpo Järvinen wrote:
>diff --git a/tools/testing/selftests/resctrl/cat_test.c 
>b/tools/testing/selftests/resctrl/cat_test.c
>index 2106cc3601d9..e71690a9bbb3 100644
>--- a/tools/testing/selftests/resctrl/cat_test.c
>+++ b/tools/testing/selftests/resctrl/cat_test.c
>@@ -111,6 +111,77 @@ void cat_test_cleanup(void)
>       remove(RESULT_FILE_NAME2);
> }
> 
>+/*
>+ * cat_test:  execute CAT benchmark and measure LLC cache misses
>+ * @param:    parameters passed to cat_test()
>+ * @span:     buffer size for the benchmark
>+ *
>+ * Return:    0 on success. non-zero on failure.
>+ */
>+static int cat_test(struct resctrl_val_param *param, size_t span)
>+{
>+      int memflush = 1, operation = 0, ret = 0;
>+      char *resctrl_val = param->resctrl_val;
>+      static struct perf_event_read pe_read;

Is there a reason why this struct is declared as static?

>+      struct perf_event_attr pea;
>+      pid_t bm_pid;
>+      int pe_fd;
>+
>+      if (strcmp(param->filename, "") == 0)
>+              sprintf(param->filename, "stdio");
>+
>+      bm_pid = getpid();
>+
>+      /* Taskset benchmark to specified cpu */
>+      ret = taskset_benchmark(bm_pid, param->cpu_no);
>+      if (ret)
>+              return ret;
>+
>+      /* Write benchmark to specified con_mon grp, mon_grp in resctrl FS*/
>+      ret = write_bm_pid_to_resctrl(bm_pid, param->ctrlgrp, param->mongrp,
>+                                    resctrl_val);
>+      if (ret)
>+              return ret;
>+
>+      perf_event_attr_initialize(&pea, PERF_COUNT_HW_CACHE_MISSES);
>+      perf_event_initialize_read_format(&pe_read);
>+
>+      /* Test runs until the callback setup() tells the test to stop. */
>+      while (1) {
>+              ret = param->setup(param);
>+              if (ret == END_OF_TESTS) {
>+                      ret = 0;
>+                      break;
>+              }
>+              if (ret < 0)
>+                      break;
>+              pe_fd = perf_event_reset_enable(&pea, bm_pid, param->cpu_no);
>+              if (pe_fd < 0) {
>+                      ret = -1;
>+                      break;
>+              }
>+
>+              if (run_fill_buf(span, memflush, operation, true)) {
>+                      fprintf(stderr, "Error-running fill buffer\n");
>+                      ret = -1;
>+                      goto pe_close;
>+              }
>+
>+              sleep(1);
>+              ret = perf_event_measure(pe_fd, &pe_read, param, bm_pid);
>+              if (ret)
>+                      goto pe_close;
>+
>+              close(pe_fd);
>+      }
>+
>+      return ret;
>+
>+pe_close:
>+      close(pe_fd);
>+      return ret;
>+}
>+
> int cat_perf_miss_val(int cpu_no, int n, char *cache_type)
> {
>       unsigned long l_mask, l_mask_1;

-- 
Kind regards
Maciej Wieczór-Retman

Reply via email to