From 726fc7a6c8e8f8e1036337e1503af0cbb1bb741f Mon Sep 17 00:00:00 2001 From: "Bjoern B. Brandenburg" Date: Tue, 22 Jan 2008 11:20:50 -0500 Subject: add mode_test --- src/mode_test.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 src/mode_test.c (limited to 'src') diff --git a/src/mode_test.c b/src/mode_test.c new file mode 100644 index 0000000..811755e --- /dev/null +++ b/src/mode_test.c @@ -0,0 +1,112 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "litmus.h" + +#define US_PER_MS 1000 + +int prefix(void) +{ + char field[1024]; + int prefix[1024]; + int i, sum = 0; + + for (i = 0; i < 1024; i++) { + sum += field[i]; + prefix[i] = sum; + } + return sum; +} + +void do_stuff(void) +{ + int i =0, j =0; + + for (; i < 50000; i++) + j += prefix(); +} + +#define CALL(sc) do { ret = sc; if (ret == -1) {perror(" (!!) " #sc " failed: "); /*exit(1)*/;}} while (0); + +unsigned int job_no; + +void next(void) +{ + int ret; + unsigned int actual; + CALL(get_job_no(&actual)); + CALL(wait_for_job_release(++job_no)); + printf("Now executing job %u, waited for %u\n", actual, job_no); +} + +int main(int argc, char** argv) +{ + int ret; + + init_litmus(); + + CALL(getpid()); + printf("my pid is %d\n", ret); + + + CALL(get_job_no(&job_no)); + printf("my job_no is %u", job_no); + + CALL( task_mode(LITMUS_RT_TASK) ); + + next(); + do_stuff(); + + next(); + do_stuff(); + + next(); + do_stuff(); + + CALL( task_mode(BACKGROUND_TASK) ); + + do_stuff(); + do_stuff(); + do_stuff(); + do_stuff(); + do_stuff(); + + CALL( task_mode(LITMUS_RT_TASK) ); + + do_stuff(); + do_stuff(); + do_stuff(); + do_stuff(); + do_stuff(); + + + next(); + next(); + next(); + next(); + next(); + next(); + next(); + + + next(); + do_stuff(); + + next(); + do_stuff(); + + next(); + do_stuff(); + + CALL( task_mode(BACKGROUND_TASK) ); + printf("Exiting...\n"); + + return 0; +} -- cgit v1.2.2