diff options
-rw-r--r-- | testsuites/libtests/rtems++/Task1.cc | 150 | ||||
-rw-r--r-- | testsuites/libtests/rtems++/rtems++.scn | 55 |
2 files changed, 104 insertions, 101 deletions
diff --git a/testsuites/libtests/rtems++/Task1.cc b/testsuites/libtests/rtems++/Task1.cc index 67cbf6ebb0..e26b0d5d60 100644 --- a/testsuites/libtests/rtems++/Task1.cc +++ b/testsuites/libtests/rtems++/Task1.cc @@ -48,42 +48,42 @@ void Task1::body(rtems_task_argument argument) { rtems_test_pause_and_screen_number(1); - - printf(" * START Task Class test *\n"); - + + printf(" START Task Class test\n"); + printf("%s - test argument - ", name_string()); if (argument != 0xDEADDEAD) printf("argument is not 0xDEADDEAD\n"); else printf("argument matched\n"); - + screen1(); rtems_test_pause_and_screen_number(2); screen2(); rtems_test_pause_and_screen_number(3); - + screen3(); rtems_test_pause_and_screen_number(4); - + screen4(); rtems_test_pause_and_screen_number(5); - + screen5(); rtems_test_pause_and_screen_number(6); - + screen6(); // do not call exit(0) from this thread as this object is static // the static destructor call delete the task which is calling exit // so exit never completes - + EndTask end_task("ENDT", (rtems_task_priority) 1, RTEMS_MINIMUM_STACK_SIZE * 6); end_task.start(0); rtemsEvent block_me; rtems_event_set out; - + block_me.receive(RTEMS_SIGNAL_0, out); printf("**** TASK 1 did not block ????\n"); @@ -96,7 +96,7 @@ void Task1::screen1(void) rtemsTask local_task_2; local_task_2 = *this; - + // check the copy constructor works printf("%s - copy constructor - ", name_string()); if (local_task_1.id_is() == id_is()) @@ -121,27 +121,27 @@ void Task1::screen1(void) printf("local and this name's match\n"); else printf("local and this name's do not match\n"); - + // check that the owner of the id cannot delete this task printf("%s - not owner destroy's task - ", local_task_1.name_string()); local_task_1.destroy(); printf("%s\n", local_task_1.last_status_string()); - + // connect to a valid task printf("%s - connect to a local valid task name - ", local_task_2.name_string()); local_task_2.connect("TA1 ", RTEMS_SEARCH_ALL_NODES); printf("%s\n", local_task_2.last_status_string()); - + // connect to an invalid task printf("%s - connect to an invalid task name - ", local_task_2.name_string()); local_task_2.connect("BADT", RTEMS_SEARCH_ALL_NODES); printf("%s\n", local_task_2.last_status_string()); - + // connect to a task an invalid node printf("%s - connect to a task on an invalid node - ", local_task_2.name_string()); local_task_2.connect("BADT", 10); printf("%s\n", local_task_2.last_status_string()); - + // restart this task printf("%s - restart from a non-owner - ", name_string()); local_task_1.restart(0); @@ -151,15 +151,15 @@ void Task1::screen1(void) void Task1::screen2(void) { // wake after using this object - + printf("%s - wake after 0 secs - ", name_string()); wake_after(0); printf("%s\n", last_status_string()); - + printf("%s - wake after 500 msecs - ", name_string()); wake_after(500000); printf("%s\n", last_status_string()); - + printf("%s - wake after 5 secs - ", name_string()); wake_after(5000000); printf("%s\n", last_status_string()); @@ -167,17 +167,17 @@ void Task1::screen2(void) printf("%s - wake when - to do\n", name_string()); rtemsTask task_1 = *this; - + // wake after using a connected object - + printf("%s - connected object wake after 0 secs - ", task_1.name_string()); task_1.wake_after(0); printf("%s\n", task_1.last_status_string()); - + printf("%s - connected object wake after 500 msecs - ", task_1.name_string()); task_1.wake_after(500000); printf("%s\n", task_1.last_status_string()); - + printf("%s - connected object wake after 5 secs - ", task_1.name_string()); task_1.wake_after(5000000); printf("%s\n", task_1.last_status_string()); @@ -185,17 +185,17 @@ void Task1::screen2(void) printf("%s - connected object wake when - to do\n", task_1.name_string()); rtemsTask task_2; - + // wake after using a self object - + printf("%s - self object wake after 0 secs - ", task_2.name_string()); task_2.wake_after(0); printf("%s\n", task_2.last_status_string()); - + printf("%s - self object wake after 500 msecs - ", task_2.name_string()); task_2.wake_after(500000); printf("%s\n", task_2.last_status_string()); - + printf("%s - self object wake after 5 secs - ", task_2.name_string()); task_2.wake_after(5000000); printf("%s\n", task_2.last_status_string()); @@ -206,7 +206,7 @@ void Task1::screen2(void) rtems_task_priority priority; // priorities with this object - + printf("%s - get priority - ", name_string()); get_priority(current_priority); printf("%s, priority is %" PRIirtems_task_priority "\n", last_status_string(), current_priority); @@ -224,7 +224,7 @@ void Task1::screen2(void) printf("%s, priority was %" PRIirtems_task_priority "\n", last_status_string(), priority); // priorities with connected object - + printf("%s - connected object get priority - ", task_1.name_string()); task_1.get_priority(current_priority); printf("%s, priority is %" PRIirtems_task_priority "\n", task_1.last_status_string(), current_priority); @@ -239,10 +239,10 @@ void Task1::screen2(void) printf("%s - connected object set priority to original - ", task_1.name_string()); task_1.set_priority(current_priority, priority); - printf("%s, priority was %" PRIirtems_task_priority "\n", task_1.last_status_string(), priority); + printf("%s, priority was %" PRIirtems_task_priority "\n", task_1.last_status_string(), priority); // priorities with self object - + printf("%s - self object get priority - ", task_2.name_string()); task_2.get_priority(current_priority); printf("%s, priority is %" PRIirtems_task_priority "\n", task_2.last_status_string(), current_priority); @@ -261,7 +261,7 @@ void Task1::screen2(void) uint32_t current_note; uint32_t note; - + // notepad registers for this object printf("%s - get note - ", name_string()); @@ -328,7 +328,7 @@ void Task1::screen2(void) task_2.set_note(0, current_note); printf("%s\n", task_2.last_status_string()); - printf(" * END Task Class test *\n"); + printf(" END Task Class test\n"); } #define RTEMS_ALL_MODES (RTEMS_PREEMPT_MASK | \ @@ -338,7 +338,7 @@ void Task1::screen2(void) void Task1::screen3(void) { - printf(" * START TaskMode Class test *\n"); + printf(" START TaskMode Class test\n"); rtemsTask self; rtemsTaskMode task_mode; @@ -352,20 +352,20 @@ void Task1::screen3(void) printf("\n"); // PREEMPTION mode control - + printf("%s - get preemption state - ", self.name_string()); task_mode.get_preemption_state(mode); printf("%s,\n\t mode is 0x%08" PRIXrtems_mode ", ", task_mode.last_status_string(), mode); print_mode(mode, RTEMS_PREEMPT_MASK); printf("\n"); - + printf("%s - set preemption state to RTEMS_PREEMPT - ", self.name_string()); task_mode.set_preemption_state(RTEMS_PREEMPT); task_mode.get_mode(mode); printf("%s,\n\t mode is 0x%08" PRIXrtems_mode ", ", task_mode.last_status_string(), mode); print_mode(mode, RTEMS_ALL_MODES); printf("\n"); - + printf("%s - set preemption state to RTEMS_NO_PREEMPT - ", self.name_string()); task_mode.set_preemption_state(RTEMS_NO_PREEMPT); task_mode.get_mode(mode); @@ -374,20 +374,20 @@ void Task1::screen3(void) printf("\n"); // TIMESLICE mode control - + printf("%s - get timeslice state - ", self.name_string()); task_mode.get_timeslice_state(mode); printf("%s,\n\t mode is 0x%08" PRIXrtems_mode ", ", task_mode.last_status_string(), mode); print_mode(mode, RTEMS_TIMESLICE_MASK); printf("\n"); - + printf("%s - set timeslice state to RTEMS_TIMESLICE - ", self.name_string()); task_mode.set_timeslice_state(RTEMS_TIMESLICE); task_mode.get_mode(mode); printf("%s,\n\t mode is 0x%08" PRIXrtems_mode ", ", task_mode.last_status_string(), mode); print_mode(mode, RTEMS_ALL_MODES); printf("\n"); - + printf("%s - set timeslice state to RTEMS_NO_TIMESLICE - ", self.name_string()); task_mode.set_timeslice_state(RTEMS_NO_TIMESLICE); task_mode.get_mode(mode); @@ -396,20 +396,20 @@ void Task1::screen3(void) printf("\n"); // ASR mode control - + printf("%s - get asr state - ", self.name_string()); task_mode.get_asr_state(mode); printf("%s,\n\t mode is 0x%08" PRIXrtems_mode ", ", task_mode.last_status_string(), mode); print_mode(mode, RTEMS_ASR_MASK); printf("\n"); - + printf("%s - set asr state to RTEMS_ASR - ", self.name_string()); task_mode.set_asr_state(RTEMS_ASR); task_mode.get_mode(mode); printf("%s,\n\t mode is 0x%08" PRIXrtems_mode ", ", task_mode.last_status_string(), mode); print_mode(mode, RTEMS_ALL_MODES); printf("\n"); - + printf("%s - set asr state to RTEMS_NO_ASR - ", self.name_string()); task_mode.set_asr_state(RTEMS_NO_ASR); task_mode.get_mode(mode); @@ -418,7 +418,7 @@ void Task1::screen3(void) printf("\n"); // interrupt level control - + rtems_interrupt_level current_level; rtems_interrupt_level level; @@ -429,7 +429,7 @@ void Task1::screen3(void) printf("%s - set interrupt level to 102 - ", self.name_string()); task_mode.set_interrupt_level(102); printf("%s\n", task_mode.last_status_string()); - + printf("%s - set interrupt level to original level - ", self.name_string()); task_mode.set_interrupt_level(current_level, level); printf("%s, level was %" PRIirtems_interrupt_level "\n", task_mode.last_status_string(), level); @@ -442,13 +442,13 @@ void Task1::screen3(void) printf("%s,\n\t mode is 0x%08" PRIXrtems_mode ", ", task_mode.last_status_string(), mode); print_mode(mode, RTEMS_ALL_MODES); printf("\n"); - - printf(" * END TaskMode Class test *\n"); + + printf(" END TaskMode Class test\n"); } void Task1::screen4(void) { - printf(" * START Event Class test *\n"); + printf(" START Event Class test\n"); printf("%s - create task 2 - ", name_string()); Task2 task_2("TA2", (rtems_task_priority) 9, RTEMS_MINIMUM_STACK_SIZE * 6); @@ -457,7 +457,7 @@ void Task1::screen4(void) printf("%s - start task 2 - ", name_string()); task_2.start(0); printf("%s\n", task_2.last_status_string()); - + printf("%s - construct event connecting to task 2 - ", name_string()); rtemsEvent event_2("TA2 "); printf("%s\n", event_2.last_status_string()); @@ -468,47 +468,47 @@ void Task1::screen4(void) printf("%s - send event signal 0 using the task id - ", name_string()); event_2.send(task_2.id_is(), RTEMS_SIGNAL_0); printf("%s\n", event_2.last_status_string()); - + wake_after(1000000); printf("%s - send event signal 0 using the task object reference - ", name_string()); event_2.send(task_2, RTEMS_SIGNAL_0); printf("%s\n", event_2.last_status_string()); - + wake_after(1000000); printf("%s - send event signal 31 using connected id - ", name_string()); event_2.send(RTEMS_SIGNAL_31); printf("%s\n", event_2.last_status_string()); - + wake_after(1000000); rtemsEvent event_2_2; event_2_2.connect("TA2"); - + printf("%s - send event signal 0 and 31 - ", name_string()); event_2_2.send(task_2, RTEMS_SIGNAL_0 | RTEMS_SIGNAL_31); printf("%s\n", event_2_2.last_status_string()); - + printf("%s - waiting 5 secs for TA2 to finish\n", name_string()); wake_after(500000); - - printf(" * END Event Class test *\n"); + + printf(" END Event Class test\n"); } void Task1::screen5(void) { - printf(" * START Interrupt Class test *\n"); + printf(" START Interrupt Class test\n"); printf(" do not know a portable BSP type interrupt test\n"); - printf(" * END Interrupt Class test *\n"); + printf(" END Interrupt Class test\n"); } void Task1::screen6(void) { - printf(" * START MessageQueue Class test *\n"); + printf(" START MessageQueue Class test\n"); printf("%s - construct message queue 1 with no memory error - ", name_string()); rtemsMessageQueue mq_1("MQ1", 1000000, 1000); @@ -523,15 +523,15 @@ void Task1::screen6(void) char in[100]; size_t size; uint32_t count; - + printf("%s - send u1 to mq_2 - ", name_string()); mq_2.send(u1, strlen(u1) + 1); printf("%s\n", mq_2.last_status_string()); - + printf("%s - urgent send u2 to mq_2 - ", name_string()); mq_2.urgent(u2, strlen(u2) + 1); printf("%s\n", mq_2.last_status_string()); - + printf("%s - create task 3_1 - ", name_string()); Task3 task_3_1("TA31", 9, RTEMS_MINIMUM_STACK_SIZE * 6); printf("%s\n", task_3_1.last_status_string()); @@ -539,7 +539,7 @@ void Task1::screen6(void) printf("%s - start task 3_1 - ", name_string()); task_3_1.start(0); printf("%s\n", task_3_1.last_status_string()); - + printf("%s - create task 3_2 - ", name_string()); Task3 task_3_2("TA32", 9, RTEMS_MINIMUM_STACK_SIZE * 6); printf("%s\n", task_3_2.last_status_string()); @@ -547,9 +547,9 @@ void Task1::screen6(void) printf("%s - start task 3_2 - ", name_string()); task_3_2.start(0); printf("%s\n", task_3_1.last_status_string()); - + wake_after(1000000); - + printf("%s - receive u2 on mq_2 ...\n", name_string()); fflush(stdout); mq_2.receive(in, size, 5000000); printf("%s - %s\n", name_string(), mq_2.last_status_string()); @@ -591,16 +591,16 @@ void Task1::screen6(void) printf("%s - message u1 size incorrect, size=%zu\n", name_string(), size); wake_after(3000000); - + const char *b1 = "broadcast message"; - + printf("%s - broadcast send b1 ...\n", name_string()); mq_2.broadcast(b1, strlen(b1) + 1, count); printf("%s - mq_2 broadcast send - %s, count=%" PRIi32 "\n", name_string(), mq_2.last_status_string(), count); wake_after(1000000); - + printf("%s - receive message b1 on mq_2 from %s...\n", name_string(), task_3_1.name_string()); fflush(stdout); mq_2.receive(in, size, 5000000); @@ -645,18 +645,18 @@ void Task1::screen6(void) // wait for task 3_1, and 3_2 to complete their timeout tests, will // start these after getting the broadcast message - wake_after(7000000); + wake_after(7000000); const char *f1 = "flush message"; - + printf("%s - send f1 to mq_2 - ", name_string()); mq_2.send(f1, strlen(f1) + 1); printf("%s\n", mq_2.last_status_string()); - + printf("%s - send f1 to mq_2 - ", name_string()); mq_2.send(f1, strlen(f1) + 1); printf("%s\n", mq_2.last_status_string()); - + printf("%s - send f1 to mq_2 - ", name_string()); mq_2.send(f1, strlen(f1) + 1); printf("%s\n", mq_2.last_status_string()); @@ -664,8 +664,8 @@ void Task1::screen6(void) printf("%s - flush mq_2 - ", name_string()); mq_2.flush(count); printf("%s, flushed=%" PRIi32 "\n", mq_2.last_status_string(), count); - - printf(" * END MessageQueue Class test *\n"); + + printf(" END MessageQueue Class test\n"); } void Task1::print_mode(rtems_mode mode, rtems_mode mask) @@ -691,7 +691,7 @@ EndTask::EndTask(const char* name, : rtemsTask(name, initial_priority, stack_size, RTEMS_NO_PREEMPT) { } - + void EndTask::body(rtems_task_argument) { printf("*** END OF RTEMS++ TEST ***\n"); diff --git a/testsuites/libtests/rtems++/rtems++.scn b/testsuites/libtests/rtems++/rtems++.scn index 2b3682d6b6..f87d0e2906 100644 --- a/testsuites/libtests/rtems++/rtems++.scn +++ b/testsuites/libtests/rtems++/rtems++.scn @@ -1,11 +1,14 @@ + + *** RTEMS++ TEST *** INIT - Task.create() - RTEMS[19] invalid thread priority INIT - Task.create() - RTEMS[00] successful completion INIT - Task.create() - RTEMS[16] illegal on calling thread INIT - Task.restart() - RTEMS[14] thread is in wrong state INIT - Task.start(0xDEADDEAD) - RTEMS[00] successful completion +INIT - Destroy it's self <pause - screen 1> - * START Task Class test * + START Task Class test TA1 - test argument - argument matched TA1 - copy constructor - local and this id's match TA1 - copy constructor - local and this name's match @@ -14,7 +17,7 @@ TA1 - copy operator - local and this name's match TA1 - not owner destroy's task - RTEMS[23] not owner of resource TA1 - connect to a local valid task name - RTEMS[00] successful completion TA1 - connect to an invalid task name - RTEMS[03] invalid object name -SELF - connect to a task on an invalid node - RTEMS[21] invalid node id +SELF - connect to a task on an invalid node - RTEMS[03] invalid object name TA1 - restart from a non-owner - RTEMS[23] not owner of resource <pause - screen 2> TA1 - wake after 0 secs - RTEMS[00] successful completion @@ -56,37 +59,37 @@ SELF - self object get with bad notepad number - RTEMS[10] number was invalid, n SELF - self object set note to 0xDEADBEEF - RTEMS[00] successful completion SELF - self object get note - RTEMS[00] successful completion, notepad is 0xDEADBEEF SELF - self object set note to original value - RTEMS[00] successful completion - * END Task Class test * + END Task Class test <pause - screen 3> - * START TaskMode Class test * + START TaskMode Class test SELF - get mode - RTEMS[00] successful completion, - mode is 0x00000100, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_NO_ASR INTMASK=0 + mode is 0x00000500, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_ASR INTMASK=0 SELF - get preemption state - RTEMS[00] successful completion, - mode is 0x00000100, RTEMS_NO_PREEMPT + mode is 0x00000100, RTEMS_NO_PREEMPT SELF - set preemption state to RTEMS_PREEMPT - RTEMS[00] successful completion, - mode is 0x00000000, RTEMS_PREEMPT RTEMS_TIMESLICE RTEMS_NO_ASR INTMASK=0 + mode is 0x00000400, RTEMS_PREEMPT RTEMS_TIMESLICE RTEMS_ASR INTMASK=0 SELF - set preemption state to RTEMS_NO_PREEMPT - RTEMS[00] successful completion, - mode is 0x00000100, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_NO_ASR INTMASK=0 + mode is 0x00000500, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_ASR INTMASK=0 SELF - get timeslice state - RTEMS[00] successful completion, - mode is 0x00000000, RTEMS_TIMESLICE + mode is 0x00000000, RTEMS_TIMESLICE SELF - set timeslice state to RTEMS_TIMESLICE - RTEMS[00] successful completion, - mode is 0x00000300, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_NO_ASR INTMASK=0 + mode is 0x00000700, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_ASR INTMASK=0 SELF - set timeslice state to RTEMS_NO_TIMESLICE - RTEMS[00] successful completion, - mode is 0x00000100, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_NO_ASR INTMASK=0 + mode is 0x00000500, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_ASR INTMASK=0 SELF - get asr state - RTEMS[00] successful completion, - mode is 0x00000000, RTEMS_NO_ASR + mode is 0x00000400, RTEMS_ASR SELF - set asr state to RTEMS_ASR - RTEMS[00] successful completion, mode is 0x00000100, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_NO_ASR INTMASK=0 SELF - set asr state to RTEMS_NO_ASR - RTEMS[00] successful completion, mode is 0x00000500, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_ASR INTMASK=0 SELF - get current interrupt level - RTEMS[00] successful completion, level is 0 SELF - set interrupt level to 102 - RTEMS[00] successful completion -SELF - set interrupt level to original level - RTEMS[00] successful completion, level was 0 +SELF - set interrupt level to original level - RTEMS[00] successful completion, level was 6 SELF - set mode to original mode - RTEMS[00] successful completion, - mode is 0x00000100, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_NO_ASR INTMASK=0 - * END TaskMode Class test * + mode is 0x00000500, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_ASR INTMASK=0 + END TaskMode Class test <pause - screen 4> - * START Event Class test * + START Event Class test TA1 - create task 2 - RTEMS[00] successful completion TA1 - start task 2 - RTEMS[00] successful completion TA1 - construct event connecting to task 2 - RTEMS[00] successful completion @@ -107,15 +110,15 @@ TA1 - waiting 5 secs for TA2 to finish TA2 - RTEMS[00] successful completion, signals out are 0x80000001 TA2 - send event signal 1 - RTEMS[00] successful completion TA2 - event wait forever for signal 1 from TA2 - RTEMS[00] successful completion, signals out are 0x00000002 -TA2 - destory itself - * END Event Class test * +TA2 - destroy itself + END Event Class test <pause - screen 5> - * START Interrupt Class test * + START Interrupt Class test do not know a portable BSP type interrupt test - * END Interrupt Class test * + END Interrupt Class test <pause - screen 6> - * START MessageQueue Class test * -TA1 - construct message queue 1 with no memory error - RTEMS[05] too many + START MessageQueue Class test +TA1 - construct message queue 1 with no memory error - RTEMS[13] request not satisfied TA1 - construct/create message queue 2 - RTEMS[00] successful completion TA1 - send u1 to mq_2 - RTEMS[00] successful completion TA1 - urgent send u2 to mq_2 - RTEMS[00] successful completion @@ -143,10 +146,10 @@ TA1 - broadcast send b1 ... TA1 - mq_2 broadcast send - RTEMS[00] successful completion, count=2 TA31 - mq_2 receive - RTEMS[00] successful completion, size=18, message string size=17 TA31 - loopback to mq_2 - RTEMS[00] successful completion -TA31 - destory itself +TA31 - destroy itself TA32 - mq_2 receive - RTEMS[00] successful completion, size=18, message string size=17 TA32 - loopback to mq_2 - RTEMS[00] successful completion -TA32 - destory itself +TA32 - destroy itself TA1 - receive message b1 on mq_2 from TA31... TA1 - RTEMS[00] successful completion TA1 - message b1 received correctly @@ -157,5 +160,5 @@ TA1 - send f1 to mq_2 - RTEMS[00] successful completion TA1 - send f1 to mq_2 - RTEMS[00] successful completion TA1 - send f1 to mq_2 - RTEMS[00] successful completion TA1 - flush mq_2 - RTEMS[00] successful completion, flushed=3 - * END MessageQueue Class test * -<pause - screen 7> + END MessageQueue Class test +*** END OF RTEMS++ TEST *** |