File indexing completed on 2025-05-11 08:24:46
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #ifdef HAVE_CONFIG_H
0029 #include "config.h"
0030 #endif
0031
0032 #include <rtems.h>
0033
0034 #include "tmacros.h"
0035
0036 const char rtems_test_name[] = "SPEVENTSYSTEM 1";
0037
0038 #define EVENT RTEMS_EVENT_0
0039
0040 static void test_with_normal_and_system_event(void)
0041 {
0042 rtems_status_code sc;
0043 rtems_event_set out;
0044
0045
0046
0047 sc = rtems_event_receive(EVENT, RTEMS_NO_WAIT, 0, &out);
0048 rtems_test_assert(sc == RTEMS_UNSATISFIED);
0049
0050 sc = rtems_event_system_receive(EVENT, RTEMS_NO_WAIT, 0, &out);
0051 rtems_test_assert(sc == RTEMS_UNSATISFIED);
0052
0053
0054
0055 sc = rtems_event_system_send(rtems_task_self(), EVENT);
0056 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0057
0058 sc = rtems_event_receive(EVENT, RTEMS_NO_WAIT, 0, &out);
0059 rtems_test_assert(sc == RTEMS_UNSATISFIED);
0060
0061 out = 0;
0062 sc = rtems_event_system_receive(EVENT, RTEMS_NO_WAIT, 0, &out);
0063 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0064 rtems_test_assert(out == EVENT);
0065
0066
0067
0068 sc = rtems_event_send(rtems_task_self(), EVENT);
0069 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0070
0071 out = 0;
0072 sc = rtems_event_receive(EVENT, RTEMS_NO_WAIT, 0, &out);
0073 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0074 rtems_test_assert(out == EVENT);
0075
0076 sc = rtems_event_system_receive(EVENT, RTEMS_NO_WAIT, 0, &out);
0077 rtems_test_assert(sc == RTEMS_UNSATISFIED);
0078 }
0079
0080 static void test_with_timeout(void)
0081 {
0082 rtems_status_code sc;
0083 rtems_event_set out;
0084
0085 sc = rtems_event_system_receive(EVENT, RTEMS_NO_WAIT, 0, &out);
0086 rtems_test_assert(sc == RTEMS_UNSATISFIED);
0087
0088 sc = rtems_event_system_receive(EVENT, RTEMS_WAIT, 1, &out);
0089 rtems_test_assert(sc == RTEMS_TIMEOUT);
0090
0091 sc = rtems_event_system_receive(EVENT, RTEMS_NO_WAIT, 0, &out);
0092 rtems_test_assert(sc == RTEMS_UNSATISFIED);
0093 }
0094
0095 static void test_with_invalid_receiver(void)
0096 {
0097 rtems_status_code sc;
0098
0099 sc = rtems_event_system_send(0xffff, EVENT);
0100 rtems_test_assert(sc == RTEMS_INVALID_ID);
0101 }
0102
0103 static void test_with_invalid_address(void)
0104 {
0105 rtems_status_code sc;
0106
0107 sc = rtems_event_system_receive(EVENT, RTEMS_NO_WAIT, 0, NULL);
0108 rtems_test_assert(sc == RTEMS_INVALID_ADDRESS);
0109 }
0110
0111 static void test_get_pending_events(void)
0112 {
0113 rtems_status_code sc;
0114 rtems_event_set out;
0115
0116 sc = rtems_event_system_receive(
0117 RTEMS_PENDING_EVENTS,
0118 RTEMS_NO_WAIT,
0119 0,
0120 &out
0121 );
0122 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0123 rtems_test_assert(out == 0);
0124 }
0125
0126 static void Init(rtems_task_argument arg)
0127 {
0128 TEST_BEGIN();
0129
0130 test_with_normal_and_system_event();
0131 test_with_timeout();
0132 test_with_invalid_receiver();
0133 test_with_invalid_address();
0134 test_get_pending_events();
0135
0136 TEST_END();
0137
0138 rtems_test_exit(0);
0139 }
0140
0141 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
0142 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0143
0144 #define CONFIGURE_MAXIMUM_TASKS 2
0145
0146 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0147
0148 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0149
0150 #define CONFIGURE_INIT
0151
0152 #include <rtems/confdefs.h>