From 0e71f86251307a37161cf3de2704a59882e25258 Mon Sep 17 00:00:00 2001 From: Glenn Elliott Date: Tue, 12 Mar 2013 13:13:22 -0400 Subject: Change convenience API routines. The sproadic_*() macros have become unwieldy. This patch replaces those convenience macros for global, clustered, and partitioned scheduling. A part of this API change is the explicit use of nanosecond time-values. Prior APIs have used lt_t (litmus time), which had an implied time scale of nanoseconds. /bin apps and test suite also updated to use revised API. Modifications to the test suite are mostly centered around using nanoseconds instead of milliseconds. --- tests/core_api.c | 5 ++++- tests/fdso.c | 2 +- tests/locks.c | 4 ++-- tests/pcp.c | 32 +++++++++++++++++--------------- tests/sched.c | 11 ++++++----- 5 files changed, 30 insertions(+), 24 deletions(-) (limited to 'tests') diff --git a/tests/core_api.c b/tests/core_api.c index b57e278..fc4deb9 100644 --- a/tests/core_api.c +++ b/tests/core_api.c @@ -18,6 +18,7 @@ TESTCASE(set_rt_task_param_invalid_params, ALL, "reject invalid rt_task values") { struct rt_task params; + init_rt_task_param(¶ms); params.cpu = 0; params.period = 100; params.relative_deadline = params.period; @@ -53,6 +54,7 @@ TESTCASE(reject_bad_priorities, P_FP, "reject invalid priorities") { struct rt_task params; + init_rt_task_param(¶ms); params.cpu = 0; params.exec_cost = 10; params.period = 100; @@ -79,6 +81,7 @@ TESTCASE(accept_valid_priorities, P_FP, "accept lowest and highest valid priorities") { struct rt_task params; + init_rt_task_param(¶ms); params.cpu = 0; params.exec_cost = 10; params.period = 100; @@ -120,7 +123,7 @@ TESTCASE(rt_fork_non_rt, LITMUS, unsigned int pid, job_no; int status; - SYSCALL( sporadic_partitioned(10, 100, 0) ); + SYSCALL( sporadic_partitioned(ms2ns(10), ms2ns(100), 0) ); SYSCALL( task_mode(LITMUS_RT_TASK) ); pid = fork(); diff --git a/tests/fdso.c b/tests/fdso.c index fda343f..570ea4a 100644 --- a/tests/fdso.c +++ b/tests/fdso.c @@ -66,7 +66,7 @@ TESTCASE(not_inherit_od, GSN_EDF | PSN_EDF, ASSERT( pid != -1 ); /* must be an RT task to lock at all */ - SYSCALL( sporadic_partitioned(10, 100, 0) ); + SYSCALL( sporadic_partitioned(ms2ns(10), ms2ns(100), 0) ); SYSCALL( task_mode(LITMUS_RT_TASK) ); if (pid == 0) { diff --git a/tests/locks.c b/tests/locks.c index 9a928b3..c3eba4e 100644 --- a/tests/locks.c +++ b/tests/locks.c @@ -53,7 +53,7 @@ TESTCASE(lock_srp, PSN_EDF | P_FP, SYSCALL( fd = open(".srp_locks", O_RDONLY | O_CREAT, S_IRUSR) ); - SYSCALL( sporadic_partitioned(10, 100, 0) ); + SYSCALL( sporadic_partitioned(ms2ns(10), ms2ns(100), 0) ); SYSCALL( task_mode(LITMUS_RT_TASK) ); SYSCALL( od = open_srp_sem(fd, 0) ); @@ -85,7 +85,7 @@ TESTCASE(lock_fmlp, PSN_EDF | GSN_EDF | P_FP, SYSCALL( fd = open(".fmlp_locks", O_RDONLY | O_CREAT, S_IRUSR) ); - SYSCALL( sporadic_partitioned(10, 100, 0) ); + SYSCALL( sporadic_partitioned(ms2ns(10), ms2ns(100), 0) ); SYSCALL( task_mode(LITMUS_RT_TASK) ); SYSCALL( od = open_fmlp_sem(fd, 0) ); diff --git a/tests/pcp.c b/tests/pcp.c index cff4240..19009a3 100644 --- a/tests/pcp.c +++ b/tests/pcp.c @@ -15,7 +15,7 @@ TESTCASE(lock_pcp, P_FP, SYSCALL( fd = open(".pcp_locks", O_RDONLY | O_CREAT, S_IRUSR) ); - SYSCALL( sporadic_partitioned(10, 100, cpu) ); + SYSCALL( sporadic_partitioned(ms2ns(10), ms2ns(100), cpu) ); SYSCALL( task_mode(LITMUS_RT_TASK) ); SYSCALL( od = open_pcp_sem(fd, 0, cpu) ); @@ -45,13 +45,14 @@ TESTCASE(pcp_inheritance, P_FP, int fd, od, cpu = 0; int child_hi, child_lo, child_middle, status, waiters; - lt_t delay = ms2lt(100); + lt_t delay = ms2ns(100); double start, stop; struct rt_task params; + init_rt_task_param(¶ms); params.cpu = 0; - params.exec_cost = ms2lt(10000); - params.period = ms2lt(100000); + params.exec_cost = ms2ns(10000); + params.period = ms2ns(100000); params.relative_deadline = params.period; params.phase = 0; params.cls = RT_CLASS_HARD; @@ -82,7 +83,7 @@ TESTCASE(pcp_inheritance, P_FP, child_middle = FORK_TASK( params.priority = LITMUS_HIGHEST_PRIORITY + 1; - params.phase = ms2lt(100); + params.phase = ms2ns(100); SYSCALL( set_rt_task_param(gettid(), ¶ms) ); SYSCALL( be_migrate_to_cpu(params.cpu) ); @@ -99,7 +100,7 @@ TESTCASE(pcp_inheritance, P_FP, child_hi = FORK_TASK( params.priority = LITMUS_HIGHEST_PRIORITY; - params.phase = ms2lt(50); + params.phase = ms2ns(50); SYSCALL( set_rt_task_param(gettid(), ¶ms) ); SYSCALL( be_migrate_to_cpu(params.cpu) ); @@ -150,13 +151,14 @@ TESTCASE(srp_ceiling_blocking, P_FP | PSN_EDF, int fd, od; int child_hi, child_lo, child_middle, status, waiters; - lt_t delay = ms2lt(100); + lt_t delay = ms2ns(100); double start, stop; struct rt_task params; + init_rt_task_param(¶ms); params.cpu = 0; - params.exec_cost = ms2lt(10000); - params.period = ms2lt(100000); + params.exec_cost = ms2ns(10000); + params.period = ms2ns(100000); params.relative_deadline = params.period; params.phase = 0; params.cls = RT_CLASS_HARD; @@ -185,8 +187,8 @@ TESTCASE(srp_ceiling_blocking, P_FP | PSN_EDF, child_middle = FORK_TASK( params.priority = LITMUS_HIGHEST_PRIORITY + 1; - params.phase = ms2lt(100); - params.relative_deadline -= ms2lt(110); + params.phase = ms2ns(100); + params.relative_deadline -= ms2ns(110); SYSCALL( set_rt_task_param(gettid(), ¶ms) ); SYSCALL( be_migrate_to_cpu(params.cpu) ); @@ -202,8 +204,8 @@ TESTCASE(srp_ceiling_blocking, P_FP | PSN_EDF, child_hi = FORK_TASK( params.priority = LITMUS_HIGHEST_PRIORITY; - params.phase = ms2lt(50); - params.relative_deadline -= ms2lt(200); + params.phase = ms2ns(50); + params.relative_deadline -= ms2ns(200); SYSCALL( set_rt_task_param(gettid(), ¶ms) ); SYSCALL( be_migrate_to_cpu(params.cpu) ); @@ -252,7 +254,7 @@ TESTCASE(lock_dpcp, P_FP, SYSCALL( fd = open(".pcp_locks", O_RDONLY | O_CREAT, S_IRUSR) ); - SYSCALL( sporadic_partitioned(10, 100, 0) ); + SYSCALL( sporadic_partitioned(ms2ns(10), ms2ns(100), 0) ); SYSCALL( task_mode(LITMUS_RT_TASK) ); SYSCALL( od = open_dpcp_sem(fd, 0, cpu) ); @@ -305,7 +307,7 @@ TESTCASE(lock_mpcp, P_FP, SYSCALL( fd = open(".pcp_locks", O_RDONLY | O_CREAT, S_IRUSR) ); - SYSCALL( sporadic_partitioned(10, 100, 0) ); + SYSCALL( sporadic_partitioned(ms2ns(10), ms2ns(100), 0) ); SYSCALL( task_mode(LITMUS_RT_TASK) ); SYSCALL( od = open_mpcp_sem(fd, 0) ); diff --git a/tests/sched.c b/tests/sched.c index 713fde2..6726b46 100644 --- a/tests/sched.c +++ b/tests/sched.c @@ -9,13 +9,14 @@ TESTCASE(preempt_on_resume, P_FP | PSN_EDF, "preempt lower-priority task when a higher-priority task resumes") { int child_hi, child_lo, status, waiters; - lt_t delay = ms2lt(100); + lt_t delay = ms2ns(100); double start, stop; struct rt_task params; + init_rt_task_param(¶ms); params.cpu = 0; - params.exec_cost = ms2lt(10000); - params.period = ms2lt(100000); + params.exec_cost = ms2ns(10000); + params.period = ms2ns(100000); params.relative_deadline = params.period; params.phase = 0; params.cls = RT_CLASS_HARD; @@ -51,14 +52,14 @@ TESTCASE(preempt_on_resume, P_FP | PSN_EDF, ; start = wctime(); - SYSCALL( lt_sleep(ms2lt(100)) ); + SYSCALL( lt_sleep(ms2ns(100)) ); stop = wctime(); SYSCALL( kill(child_lo, SIGUSR2) ); if (stop - start >= 0.2) fprintf(stderr, "\nHi-prio delay = %fsec\n", - stop - start - (ms2lt(100) / 1E9)); + stop - start - (ms2ns(100) / (float)s2ns(1))); /* Assert we woke up 'soonish' after the sleep. */ ASSERT( stop - start < 0.2 ); -- cgit v1.2.2