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 --- Makefile | 5 ++- src/mode_test.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 src/mode_test.c diff --git a/Makefile b/Makefile index 250820a..ac463f3 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ CPPFLAGS=-Wall -g LIBS= ./liblitmus.a -TARGETS = showsched iotest set_rt_mode run timeout rt_launch edfhsb liblitmus.a wait_test np_test stdump +TARGETS = showsched iotest set_rt_mode run timeout rt_launch edfhsb liblitmus.a wait_test np_test stdump mode_test vpath %.h include/ vpath %.c src/ @@ -15,6 +15,9 @@ clean: wait_test: wait_test.o litmus.h liblitmus.a cc -static -o wait_test wait_test.o ${LIBS} +mode_test: mode_test.o litmus.h liblitmus.a + cc -static -o mode_test mode_test.o ${LIBS} + np_test: np_test.o litmus.h liblitmus.a cc -static -o np_test np_test.o ${LIBS} 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