mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-13 20:59:37 +02:00
selftests/resctrl: Move run_benchmark() to a more fitting file
[ Upstream commit508934b5d1
] resctrlfs.c contains mostly functions that interact in some way with resctrl FS entries while functions inside resctrl_val.c deal with measurements and benchmarking. run_benchmark() is located in resctrlfs.c even though it's purpose is not interacting with the resctrl FS but to execute cache checking logic. Move run_benchmark() to resctrl_val.c just before resctrl_val() that makes use of run_benchmark(). Make run_benchmark() static since it's not used between multiple files anymore. Remove return comment from kernel-doc since the function is type void. Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com> Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org> Stable-dep-of:c44000b653
("selftests/resctrl: Fix closing IMC fds on error and open-code R+W instead of loops") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
a2cb20de7a
commit
ec204ab6c2
|
@ -86,7 +86,6 @@ int validate_bw_report_request(char *bw_report);
|
||||||
bool validate_resctrl_feature_request(const char *resource, const char *feature);
|
bool validate_resctrl_feature_request(const char *resource, const char *feature);
|
||||||
char *fgrep(FILE *inf, const char *str);
|
char *fgrep(FILE *inf, const char *str);
|
||||||
int taskset_benchmark(pid_t bm_pid, int cpu_no);
|
int taskset_benchmark(pid_t bm_pid, int cpu_no);
|
||||||
void run_benchmark(int signum, siginfo_t *info, void *ucontext);
|
|
||||||
int write_schemata(char *ctrlgrp, char *schemata, int cpu_no,
|
int write_schemata(char *ctrlgrp, char *schemata, int cpu_no,
|
||||||
char *resctrl_val);
|
char *resctrl_val);
|
||||||
int write_bm_pid_to_resctrl(pid_t bm_pid, char *ctrlgrp, char *mongrp,
|
int write_bm_pid_to_resctrl(pid_t bm_pid, char *ctrlgrp, char *mongrp,
|
||||||
|
|
|
@ -625,6 +625,56 @@ measure_vals(struct resctrl_val_param *param, unsigned long *bw_resc_start)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* run_benchmark - Run a specified benchmark or fill_buf (default benchmark)
|
||||||
|
* in specified signal. Direct benchmark stdio to /dev/null.
|
||||||
|
* @signum: signal number
|
||||||
|
* @info: signal info
|
||||||
|
* @ucontext: user context in signal handling
|
||||||
|
*/
|
||||||
|
static void run_benchmark(int signum, siginfo_t *info, void *ucontext)
|
||||||
|
{
|
||||||
|
int operation, ret, memflush;
|
||||||
|
char **benchmark_cmd;
|
||||||
|
size_t span;
|
||||||
|
bool once;
|
||||||
|
FILE *fp;
|
||||||
|
|
||||||
|
benchmark_cmd = info->si_ptr;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Direct stdio of child to /dev/null, so that only parent writes to
|
||||||
|
* stdio (console)
|
||||||
|
*/
|
||||||
|
fp = freopen("/dev/null", "w", stdout);
|
||||||
|
if (!fp)
|
||||||
|
PARENT_EXIT("Unable to direct benchmark status to /dev/null");
|
||||||
|
|
||||||
|
if (strcmp(benchmark_cmd[0], "fill_buf") == 0) {
|
||||||
|
/* Execute default fill_buf benchmark */
|
||||||
|
span = strtoul(benchmark_cmd[1], NULL, 10);
|
||||||
|
memflush = atoi(benchmark_cmd[2]);
|
||||||
|
operation = atoi(benchmark_cmd[3]);
|
||||||
|
if (!strcmp(benchmark_cmd[4], "true"))
|
||||||
|
once = true;
|
||||||
|
else if (!strcmp(benchmark_cmd[4], "false"))
|
||||||
|
once = false;
|
||||||
|
else
|
||||||
|
PARENT_EXIT("Invalid once parameter");
|
||||||
|
|
||||||
|
if (run_fill_buf(span, memflush, operation, once))
|
||||||
|
fprintf(stderr, "Error in running fill buffer\n");
|
||||||
|
} else {
|
||||||
|
/* Execute specified benchmark */
|
||||||
|
ret = execvp(benchmark_cmd[0], benchmark_cmd);
|
||||||
|
if (ret)
|
||||||
|
perror("wrong\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(stdout);
|
||||||
|
PARENT_EXIT("Unable to run specified benchmark");
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* resctrl_val: execute benchmark and measure memory bandwidth on
|
* resctrl_val: execute benchmark and measure memory bandwidth on
|
||||||
* the benchmark
|
* the benchmark
|
||||||
|
|
|
@ -293,58 +293,6 @@ int taskset_benchmark(pid_t bm_pid, int cpu_no)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* run_benchmark - Run a specified benchmark or fill_buf (default benchmark)
|
|
||||||
* in specified signal. Direct benchmark stdio to /dev/null.
|
|
||||||
* @signum: signal number
|
|
||||||
* @info: signal info
|
|
||||||
* @ucontext: user context in signal handling
|
|
||||||
*
|
|
||||||
* Return: void
|
|
||||||
*/
|
|
||||||
void run_benchmark(int signum, siginfo_t *info, void *ucontext)
|
|
||||||
{
|
|
||||||
int operation, ret, memflush;
|
|
||||||
char **benchmark_cmd;
|
|
||||||
size_t span;
|
|
||||||
bool once;
|
|
||||||
FILE *fp;
|
|
||||||
|
|
||||||
benchmark_cmd = info->si_ptr;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Direct stdio of child to /dev/null, so that only parent writes to
|
|
||||||
* stdio (console)
|
|
||||||
*/
|
|
||||||
fp = freopen("/dev/null", "w", stdout);
|
|
||||||
if (!fp)
|
|
||||||
PARENT_EXIT("Unable to direct benchmark status to /dev/null");
|
|
||||||
|
|
||||||
if (strcmp(benchmark_cmd[0], "fill_buf") == 0) {
|
|
||||||
/* Execute default fill_buf benchmark */
|
|
||||||
span = strtoul(benchmark_cmd[1], NULL, 10);
|
|
||||||
memflush = atoi(benchmark_cmd[2]);
|
|
||||||
operation = atoi(benchmark_cmd[3]);
|
|
||||||
if (!strcmp(benchmark_cmd[4], "true"))
|
|
||||||
once = true;
|
|
||||||
else if (!strcmp(benchmark_cmd[4], "false"))
|
|
||||||
once = false;
|
|
||||||
else
|
|
||||||
PARENT_EXIT("Invalid once parameter");
|
|
||||||
|
|
||||||
if (run_fill_buf(span, memflush, operation, once))
|
|
||||||
fprintf(stderr, "Error in running fill buffer\n");
|
|
||||||
} else {
|
|
||||||
/* Execute specified benchmark */
|
|
||||||
ret = execvp(benchmark_cmd[0], benchmark_cmd);
|
|
||||||
if (ret)
|
|
||||||
perror("wrong\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(stdout);
|
|
||||||
PARENT_EXIT("Unable to run specified benchmark");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* create_grp - Create a group only if one doesn't exist
|
* create_grp - Create a group only if one doesn't exist
|
||||||
* @grp_name: Name of the group
|
* @grp_name: Name of the group
|
||||||
|
|
Loading…
Reference in New Issue
Block a user