mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 17:36:20 +03:00
gpu: nvgpu: posix: Multithreading for unit tests
Add a -j argument to enable running unit tests on several threads. Also adds signal handling to prevent a fatal error in one thread from killing the whole unit test framework. JIRA NVGPU-1043 Change-Id: I891a547640cd005a50ffa5c06367ed46c54de012 Signed-off-by: Nicolas Benech <nbenech@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1847740 Reviewed-by: svc-misra-checker <svc-misra-checker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Alex Waterman <alexw@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
Abdul Salam
parent
c2cf2252a9
commit
ac87a707b3
@@ -36,11 +36,12 @@ static struct option core_opts[] = {
|
||||
{ "no-color", 0, NULL, 'C' },
|
||||
|
||||
{ "unit-load-path", 1, NULL, 'L' },
|
||||
{ "num-threads", 1, NULL, 'j' },
|
||||
|
||||
{ NULL, 0, NULL, 0 }
|
||||
};
|
||||
|
||||
static const char *core_opts_str = "hvqCL:";
|
||||
static const char *core_opts_str = "hvqCL:j:";
|
||||
|
||||
void core_print_help(struct unit_fw *fw)
|
||||
{
|
||||
@@ -63,6 +64,8 @@ void core_print_help(struct unit_fw *fw)
|
||||
" corrupt that file.\n",
|
||||
" -L, --unit-load-path <PATH>\n",
|
||||
" Path to where the unit test libraries reside.\n",
|
||||
" -j, --num-threads <COUNT>\n",
|
||||
" Number of threads to use while running all tests.\n",
|
||||
"\n",
|
||||
"Note: mandatory arguments to long arguments are mandatory for short\n",
|
||||
"arguments as well.\n",
|
||||
@@ -79,6 +82,7 @@ NULL
|
||||
static void set_arg_defaults(struct unit_fw_args *args)
|
||||
{
|
||||
args->unit_load_path = DEFAULT_ARG_UNIT_LOAD_PATH;
|
||||
args->thread_count = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -121,6 +125,13 @@ int core_parse_args(struct unit_fw *fw, int argc, char **argv)
|
||||
case 'L':
|
||||
args->unit_load_path = optarg;
|
||||
break;
|
||||
case 'j':
|
||||
args->thread_count = strtol(optarg, NULL, 10);
|
||||
if (args->thread_count == 0) {
|
||||
core_err(fw, "Invalid number of threads\n");
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
case '?':
|
||||
args->help = true;
|
||||
return -1;
|
||||
|
||||
Reference in New Issue
Block a user