Read the memory bandwidth from the IMC using linked list.

Signed-off-by: Yifan Wu <[email protected]>
---
 tools/testing/selftests/resctrl/resctrl_val.c | 26 +++++++++----------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/tools/testing/selftests/resctrl/resctrl_val.c 
b/tools/testing/selftests/resctrl/resctrl_val.c
index ce5f96d5457c..65ae93205b38 100644
--- a/tools/testing/selftests/resctrl/resctrl_val.c
+++ b/tools/testing/selftests/resctrl/resctrl_val.c
@@ -57,15 +57,15 @@ static void read_mem_bw_initialize_perf_event_attr(struct 
imc_counter_config *im
                PERF_FORMAT_TOTAL_TIME_ENABLED | PERF_FORMAT_TOTAL_TIME_RUNNING;
 }
 
-static void read_mem_bw_ioctl_perf_event_ioc_reset_enable(int i)
+static void read_mem_bw_ioctl_perf_event_ioc_reset_enable(struct 
imc_counter_config *imc_counter)
 {
-       ioctl(imc_counters_config[i].fd, PERF_EVENT_IOC_RESET, 0);
-       ioctl(imc_counters_config[i].fd, PERF_EVENT_IOC_ENABLE, 0);
+       ioctl(imc_counter->fd, PERF_EVENT_IOC_RESET, 0);
+       ioctl(imc_counter->fd, PERF_EVENT_IOC_ENABLE, 0);
 }
 
-static void read_mem_bw_ioctl_perf_event_ioc_disable(int i)
+static void read_mem_bw_ioctl_perf_event_ioc_disable(struct imc_counter_config 
*imc_counter)
 {
-       ioctl(imc_counters_config[i].fd, PERF_EVENT_IOC_DISABLE, 0);
+       ioctl(imc_counter->fd, PERF_EVENT_IOC_DISABLE, 0);
 }
 
 /*
@@ -361,16 +361,16 @@ static int perf_open_imc_read_mem_bw(int cpu_no)
  */
 static void do_imc_read_mem_bw_test(void)
 {
-       int imc;
+       struct imc_counter_config *imc_counter;
 
-       for (imc = 0; imc < imcs; imc++)
-               read_mem_bw_ioctl_perf_event_ioc_reset_enable(imc);
+       list_for_each_entry(imc_counter, &imc_counters_list, entry)
+               read_mem_bw_ioctl_perf_event_ioc_reset_enable(imc_counter);
 
        sleep(1);
 
        /* Stop counters after a second to get results. */
-       for (imc = 0; imc < imcs; imc++)
-               read_mem_bw_ioctl_perf_event_ioc_disable(imc);
+       list_for_each_entry(imc_counter, &imc_counters_list, entry)
+               read_mem_bw_ioctl_perf_event_ioc_disable(imc_counter);
 }
 
 /*
@@ -385,17 +385,15 @@ static void do_imc_read_mem_bw_test(void)
 static int get_read_mem_bw_imc(float *bw_imc)
 {
        float reads = 0, of_mul_read = 1;
-       int imc;
+       struct imc_counter_config *r;
 
        /*
         * Log read event values from all iMC counters into
         * struct imc_counter_config.
         * Take overflow into consideration before calculating total bandwidth.
         */
-       for (imc = 0; imc < imcs; imc++) {
+       list_for_each_entry(r, &imc_counters_list, entry) {
                struct membw_read_format measurement;
-               struct imc_counter_config *r =
-                       &imc_counters_config[imc];
 
                if (read(r->fd, &measurement, sizeof(measurement)) == -1) {
                        ksft_perror("Couldn't get read bandwidth through iMC");
-- 
2.43.0


Reply via email to