summaryrefslogtreecommitdiffstats
path: root/testsuites/smptests/smpirqs01/init.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--testsuites/smptests/smpirqs01/init.c65
1 files changed, 63 insertions, 2 deletions
diff --git a/testsuites/smptests/smpirqs01/init.c b/testsuites/smptests/smpirqs01/init.c
index 4350647ca5..03238227fd 100644
--- a/testsuites/smptests/smpirqs01/init.c
+++ b/testsuites/smptests/smpirqs01/init.c
@@ -64,11 +64,10 @@ static void ensure_server_termination(void)
T_rsc_success(sc);
}
-T_TEST_CASE(InterruptServerSMPInitializeDestroy)
+T_TEST_CASE(InterruptServerSMPInitializeIncorrectState)
{
rtems_status_code sc;
uint32_t server_count;
- void *greedy;
T_assert_eq_u32(rtems_scheduler_get_processor_maximum(), 2);
@@ -104,6 +103,14 @@ T_TEST_CASE(InterruptServerSMPInitializeDestroy)
sc = rtems_interrupt_server_delete(1);
T_rsc_success(sc);
ensure_server_termination();
+}
+
+T_TEST_CASE(InterruptServerSMPInitializeInvalidPriority)
+{
+ rtems_status_code sc;
+ uint32_t server_count;
+
+ T_assert_eq_u32(rtems_scheduler_get_processor_maximum(), 2);
server_count = 456;
sc = rtems_interrupt_server_initialize(
@@ -134,6 +141,15 @@ T_TEST_CASE(InterruptServerSMPInitializeDestroy)
sc = rtems_interrupt_server_delete(1);
T_rsc_success(sc);
ensure_server_termination();
+}
+
+T_TEST_CASE(InterruptServerSMPInitializeNoMemory)
+{
+ rtems_status_code sc;
+ uint32_t server_count;
+ void *greedy;
+
+ T_assert_eq_u32(rtems_scheduler_get_processor_maximum(), 2);
greedy = rtems_heap_greedy_allocate(NULL, 0);
@@ -158,6 +174,51 @@ T_TEST_CASE(InterruptServerSMPInitializeDestroy)
T_rsc(sc, RTEMS_INVALID_ID);
}
+T_TEST_CASE(InterruptServerSMPInitializeNoScheduler)
+{
+ rtems_status_code sc;
+ uint32_t server_count;
+ rtems_id scheduler_id;
+ rtems_task_priority prio;
+
+ T_assert_eq_u32(rtems_scheduler_get_processor_maximum(), 2);
+
+ scheduler_id = 0;
+ sc = rtems_scheduler_ident_by_processor(1, &scheduler_id);
+ T_rsc_success(sc);
+ T_ne_u32(scheduler_id, 0);
+
+ sc = rtems_scheduler_remove_processor(scheduler_id, 1);
+ T_rsc_success(sc);
+
+ server_count = 456;
+ sc = rtems_interrupt_server_initialize(
+ 123,
+ RTEMS_MINIMUM_STACK_SIZE,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &server_count
+ );
+ T_rsc_success(sc);
+ T_eq_u32(server_count, 2);
+
+ sc = rtems_interrupt_server_delete(0);
+ T_rsc_success(sc);
+
+ sc = rtems_interrupt_server_delete(1);
+ T_rsc_success(sc);
+
+ prio = 0;
+ sc = rtems_task_set_priority(RTEMS_SELF, 124, &prio);
+ T_rsc_success(sc);
+
+ sc = rtems_task_set_priority(RTEMS_SELF, prio, &prio);
+ T_rsc_success(sc);
+
+ sc = rtems_scheduler_add_processor(scheduler_id, 1);
+ T_rsc_success(sc);
+}
+
const char rtems_test_name[] = "SMPIRQS 1";
static void Init(rtems_task_argument argument)