Different hardwares have different threasholds for usleep_val to reliably trigger an prio inversion, add option --usleep to allow specifying it at runtime, to facilitate testing of prio inheritance on different platforms. Signed-off-by: Shizhao Chen <shichen@xxxxxxxxxx> --- src/pi_tests/pip_stress.8 | 6 +++++- src/pi_tests/pip_stress.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/pi_tests/pip_stress.8 b/src/pi_tests/pip_stress.8 index 0d06dd2..f55e2d8 100644 --- a/src/pi_tests/pip_stress.8 +++ b/src/pi_tests/pip_stress.8 @@ -5,7 +5,8 @@ .B pip_stress \- Priority Inheritance with processes .SH SYNOPSIS .B pip_stress - +.RB [ \-u|\-\-usleep +.IR TIME ] .SH DESCRIPTION This program demonstrates the technique of using priority inheritance (PI) mutexes with processes instead of threads. @@ -41,6 +42,9 @@ merely increase the time that the low priority process sleeps while holding the lock. (usleep); Also note that you have to run as a user with permission to change scheduling priorities. +.SH OPTIONS +.IP "\-u TIME,\-\-usleep=TIME" +Specify the sleep time of the low priority process. Defaults to 500(us). .BR .SH AUTHOR pip_stress was written by John Kacur <jkacur at redhat.com> diff --git a/src/pi_tests/pip_stress.c b/src/pi_tests/pip_stress.c index fb0391b..782e5db 100644 --- a/src/pi_tests/pip_stress.c +++ b/src/pi_tests/pip_stress.c @@ -72,7 +72,9 @@ static void usage(int error) printf("pip_stress V %1.2f\n", VERSION); printf("Usage:\n" "pip_stress <options>\n"\ - "-h --help Show this help menu.\n" + "-h --help Show this help menu.\n"\ + "-u TIME --usleep=TIME Specify the sleep time of the low priority process.\n"\ + " Defaults to 500(us).\n" ); exit(error); } @@ -88,16 +90,20 @@ int main(int argc, char *argv[]) for (;;) { struct option long_options[] = { { "help", no_argument, NULL, 'h' }, + { "usleep", required_argument, NULL, 'u' }, { NULL, 0, NULL, 0 }, }; - int c = getopt_long(argc, argv, "s:h", long_options, NULL); + int c = getopt_long(argc, argv, "hu:", long_options, NULL); if (c == -1) break; switch (c) { case 'h': usage(0); break; + case 'u': + usleep_val = (useconds_t)strtoul(optarg, NULL, 10); + break; default: usage(1); break; -- 2.47.1