RTEMS
tr-event-send-receive.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 
9 /*
10  * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions
14  * are met:
15  * 1. Redistributions of source code must retain the above copyright
16  * notice, this list of conditions and the following disclaimer.
17  * 2. Redistributions in binary form must reproduce the above copyright
18  * notice, this list of conditions and the following disclaimer in the
19  * documentation and/or other materials provided with the distribution.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31  * POSSIBILITY OF SUCH DAMAGE.
32  */
33 
34 /*
35  * Do not manually edit this file. It is part of the RTEMS quality process
36  * and was automatically generated.
37  *
38  * If you find something that needs to be fixed or worded better please
39  * post a report to an RTEMS mailing list or raise a bug report:
40  *
41  * https://docs.rtems.org/branches/master/user/support/bugs.html
42  *
43  * For information on updating and regenerating please refer to:
44  *
45  * https://docs.rtems.org/branches/master/eng/req/howto.html
46  */
47 
48 #ifdef HAVE_CONFIG_H
49 #include "config.h"
50 #endif
51 
52 #include <rtems/score/threadimpl.h>
53 
54 #include "tr-event-send-receive.h"
55 
56 #include <rtems/test.h>
57 
67 typedef enum {
68  PRIO_HIGH = 1,
69  PRIO_NORMAL,
70  PRIO_LOW,
71  PRIO_OTHER
72 } Priorities;
73 
74 typedef enum {
75  SENDER_NONE,
76  SENDER_SELF,
77  SENDER_SELF_2,
78  SENDER_WORKER,
79  SENDER_INTERRUPT
80 } SenderTypes;
81 
82 typedef enum {
83  RECEIVE_SKIP,
84  RECEIVE_NORMAL,
85  RECEIVE_INTERRUPT
86 } ReceiveTypes;
87 
88 typedef enum {
89  RECEIVE_COND_UNKNOWN,
90  RECEIVE_COND_SATSIFIED,
91  RECEIVE_COND_UNSATISFIED
92 } ReceiveConditionStates;
93 
97 typedef struct {
102  SenderTypes sender_type;
103 
107  Priorities sender_prio;
108 
113 
118 
123 
127  ReceiveTypes receive_type;
128 
134 
139 
145 
150 
155  ReceiveConditionStates receive_condition_state;
156 
162 
167 
172 
177 
183 
189 
195 
201 
206 
212 
218 
223  rtems_event_set ( *get_pending_events )( Thread_Control * );
224 
229  unsigned int wait_class;
230 
236 
240  size_t pcs[ 4 ];
241 
248 
250  RtemsEventReqSendReceive_Instance;
251 
252 static const char * const RtemsEventReqSendReceive_PreDesc_Id[] = {
253  "InvId",
254  "Task",
255  "NA"
256 };
257 
258 static const char * const RtemsEventReqSendReceive_PreDesc_Send[] = {
259  "Zero",
260  "Unrelated",
261  "Any",
262  "All",
263  "MixedAny",
264  "MixedAll",
265  "NA"
266 };
267 
268 static const char * const RtemsEventReqSendReceive_PreDesc_ReceiverState[] = {
269  "NotWaiting",
270  "Poll",
271  "Timeout",
272  "Lower",
273  "Equal",
274  "Higher",
275  "Other",
276  "Intend",
277  "NA"
278 };
279 
280 static const char * const RtemsEventReqSendReceive_PreDesc_Satisfy[] = {
281  "All",
282  "Any",
283  "NA"
284 };
285 
286 static const char * const * const RtemsEventReqSendReceive_PreDesc[] = {
287  RtemsEventReqSendReceive_PreDesc_Id,
288  RtemsEventReqSendReceive_PreDesc_Send,
289  RtemsEventReqSendReceive_PreDesc_ReceiverState,
290  RtemsEventReqSendReceive_PreDesc_Satisfy,
291  NULL
292 };
293 
294 #define INPUT_EVENTS ( RTEMS_EVENT_5 | RTEMS_EVENT_23 )
295 
296 #define WORKER_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
297 
298 #define MAX_TLS_SIZE RTEMS_ALIGN_UP( 64, RTEMS_TASK_STORAGE_ALIGNMENT )
299 
301 
302 RTEMS_ALIGNED( RTEMS_TASK_STORAGE_ALIGNMENT ) static char WorkerStorage[
304  MAX_TLS_SIZE + RTEMS_MINIMUM_STACK_SIZE,
305  WORKER_ATTRIBUTES
306  )
307 ];
308 
309 static const rtems_task_config WorkerConfig = {
310  .name = rtems_build_name( 'W', 'O', 'R', 'K' ),
311  .initial_priority = PRIO_LOW,
312  .storage_area = WorkerStorage,
313  .storage_size = sizeof( WorkerStorage ),
314  .maximum_thread_local_storage_size = MAX_TLS_SIZE,
315  .initial_modes = RTEMS_DEFAULT_MODES,
316  .attributes = WORKER_ATTRIBUTES
317 };
318 
319 static rtems_id CreateWakeupSema( void )
320 {
322  rtems_id id;
323 
325  rtems_build_name( 'W', 'K', 'U', 'P' ),
326  0,
328  0,
329  &id
330  );
331  T_assert_rsc_success( sc );
332 
333  return id;
334 }
335 
336 static void DeleteWakeupSema( rtems_id id )
337 {
338  if ( id != 0 ) {
340 
341  sc = rtems_semaphore_delete( id );
342  T_rsc_success( sc );
343  }
344 }
345 
346 static void Wait( rtems_id id )
347 {
349 
351  T_quiet_rsc_success( sc );
352 }
353 
354 static void Wakeup( rtems_id id )
355 {
357 
358  sc = rtems_semaphore_release( id );
359  T_quiet_rsc_success( sc );
360 }
361 
362 static bool BlockedForEvent( Context *ctx, Thread_Wait_flags flags )
363 {
364  return flags == ( ctx->wait_class | THREAD_WAIT_STATE_BLOCKED );
365 }
366 
367 static bool IntendsToBlockForEvent( Context *ctx, Thread_Wait_flags flags )
368 {
369  return flags == ( ctx->wait_class | THREAD_WAIT_STATE_INTEND_TO_BLOCK );
370 }
371 
372 static bool EventReadyAgain( Context *ctx, Thread_Wait_flags flags )
373 {
374  return flags == ( ctx->wait_class | THREAD_WAIT_STATE_READY_AGAIN );
375 }
376 
377 static bool IsSatisfiedFlags( Context *ctx )
378 {
379  return EventReadyAgain(
380  ctx,
382  );
383 }
384 
385 static bool IsSatisfiedState( Context *ctx )
386 {
387  return ctx->runner_thread->current_state != ctx->waiting_for_event;
388 }
389 
390 static void SendAction( Context *ctx )
391 {
392  T_thread_switch_log *log;
393 
394  log = T_thread_switch_record_4( &ctx->thread_switch_log );
395  T_quiet_null( log );
396  ctx->send_status = ( *ctx->send )( ctx->receiver_id, ctx->events_to_send );
397  log = T_thread_switch_record( NULL );
398  T_quiet_eq_ptr( log, &ctx->thread_switch_log.log );
399 }
400 
401 static void Send(
402  Context *ctx,
403  bool ( *is_satsified )( Context * )
404 )
405 {
406  SendAction( ctx );
407 
408  if ( ( *is_satsified )( ctx ) ) {
409  ctx->receive_condition_state = RECEIVE_COND_SATSIFIED;
410  } else {
412  rtems_event_set pending;
413  rtems_event_set missing;
414 
415  ctx->receive_condition_state = RECEIVE_COND_UNSATISFIED;
416  pending = ( *ctx->get_pending_events )( ctx->runner_thread );
417  ctx->unsatisfied_pending = pending;
418 
419  missing = INPUT_EVENTS & ~ctx->events_to_send;
420  T_ne_u32( missing, 0 );
421  sc = ( *ctx->send )( ctx->runner_id, missing );
422  T_rsc_success( sc );
423 
424  pending = ( *ctx->get_pending_events )( ctx->runner_thread );
425  T_eq_u32( pending, ctx->events_to_send & ~INPUT_EVENTS );
426  }
427 }
428 
429 static void Worker( rtems_task_argument arg )
430 {
431  Context *ctx;
432 
433  ctx = (Context *) arg;
434 
435  while ( true ) {
437  rtems_task_priority prio;
438 
439  Wait( ctx->worker_wakeup );
440 
441  switch ( ctx->sender_prio ) {
442  case PRIO_NORMAL:
443  case PRIO_HIGH:
444  prio = 0;
445  sc = rtems_task_set_priority( RTEMS_SELF, ctx->sender_prio, &prio );
446  T_rsc_success( sc );
447  T_eq_u32( prio, PRIO_LOW );
448  break;
449  case PRIO_OTHER:
451  RTEMS_SELF,
452  ctx->other_sched,
453  PRIO_LOW
454  );
455  T_rsc_success( sc );
456  break;
457  case PRIO_LOW:
458  break;
459  }
460 
461  Send( ctx, IsSatisfiedState );
462 
464  RTEMS_SELF,
465  ctx->runner_sched,
466  PRIO_HIGH
467  );
468  T_rsc_success( sc );
469 
470  Wakeup( ctx->runner_wakeup );
471  }
472 }
473 
474 static rtems_event_set GetPendingEvents( Context *ctx )
475 {
476  rtems_event_set pending;
478 
479  sc = ( *ctx->receive )(
482  0,
483  &pending
484  );
485  T_quiet_rsc_success( sc );
486 
487  return pending;
488 }
489 
490 static void RtemsEventReqSendReceive_Cleanup( Context *ctx );
491 
492 static void InterruptPrepare( void *arg )
493 {
494  RtemsEventReqSendReceive_Cleanup( arg );
495 }
496 
497 static void InterruptAction( void *arg )
498 {
499  Context *ctx;
500 
501  ctx = arg;
502  ctx->receive_status = ( *ctx->receive )(
503  INPUT_EVENTS,
504  ctx->receive_option_set,
505  ctx->receive_timeout,
506  &ctx->received_events
507  );
508  T_quiet_rsc_success( ctx->receive_status );
509 }
510 
511 static void InterruptContinue( Context *ctx )
512 {
514 
515  sc = ( *ctx->send )( ctx->receiver_id, INPUT_EVENTS );
516  T_quiet_rsc_success( sc );
517 }
518 
519 static T_interrupt_test_state Interrupt( void *arg )
520 {
521  Context *ctx;
522  Thread_Wait_flags flags;
523  T_interrupt_test_state next_state;
524  T_interrupt_test_state previous_state;
525 
526  ctx = arg;
527  flags = _Thread_Wait_flags_get( ctx->runner_thread );
528 
529  if ( IntendsToBlockForEvent( ctx, flags ) ) {
530  next_state = T_INTERRUPT_TEST_DONE;
531  } else if ( BlockedForEvent( ctx, flags ) ) {
532  next_state = T_INTERRUPT_TEST_LATE;
533  } else {
534  next_state = T_INTERRUPT_TEST_EARLY;
535  }
536 
537  previous_state = T_interrupt_test_change_state(
538  T_INTERRUPT_TEST_ACTION,
539  next_state
540  );
541 
542  if ( previous_state == T_INTERRUPT_TEST_ACTION ) {
543  if ( next_state == T_INTERRUPT_TEST_DONE ) {
544  Send( ctx, IsSatisfiedFlags );
545  } else {
546  InterruptContinue( ctx );
547  }
548  }
549 
550  return next_state;
551 }
552 
553 static const T_interrupt_test_config InterruptConfig = {
554  .prepare = InterruptPrepare,
555  .action = InterruptAction,
556  .interrupt = Interrupt,
557  .max_iteration_count = 10000
558 };
559 
560 static void RtemsEventReqSendReceive_Pre_Id_Prepare(
562  RtemsEventReqSendReceive_Pre_Id state
563 )
564 {
565  switch ( state ) {
566  case RtemsEventReqSendReceive_Pre_Id_InvId: {
567  ctx->receiver_id = 0xffffffff;
568  ctx->sender_type = SENDER_SELF;
569  break;
570  }
571 
572  case RtemsEventReqSendReceive_Pre_Id_Task: {
573  ctx->receiver_id = ctx->runner_id;
574  break;
575  }
576 
577  case RtemsEventReqSendReceive_Pre_Id_NA:
578  break;
579  }
580 }
581 
582 static void RtemsEventReqSendReceive_Pre_Send_Prepare(
584  RtemsEventReqSendReceive_Pre_Send state
585 )
586 {
587  switch ( state ) {
588  case RtemsEventReqSendReceive_Pre_Send_Zero: {
589  ctx->events_to_send = 0;
590  break;
591  }
592 
593  case RtemsEventReqSendReceive_Pre_Send_Unrelated: {
595  break;
596  }
597 
598  case RtemsEventReqSendReceive_Pre_Send_Any: {
600  break;
601  }
602 
603  case RtemsEventReqSendReceive_Pre_Send_All: {
605  break;
606  }
607 
608  case RtemsEventReqSendReceive_Pre_Send_MixedAny: {
610  break;
611  }
612 
613  case RtemsEventReqSendReceive_Pre_Send_MixedAll: {
615  break;
616  }
617 
618  case RtemsEventReqSendReceive_Pre_Send_NA:
619  break;
620  }
621 }
622 
623 static void RtemsEventReqSendReceive_Pre_ReceiverState_Prepare(
625  RtemsEventReqSendReceive_Pre_ReceiverState state
626 )
627 {
628  switch ( state ) {
629  case RtemsEventReqSendReceive_Pre_ReceiverState_NotWaiting: {
630  ctx->sender_type = SENDER_SELF;
631  ctx->receive_type = RECEIVE_SKIP;
632  break;
633  }
634 
635  case RtemsEventReqSendReceive_Pre_ReceiverState_Poll: {
636  ctx->sender_type = SENDER_SELF;
637  ctx->receive_type = RECEIVE_NORMAL;
639  break;
640  }
641 
642  case RtemsEventReqSendReceive_Pre_ReceiverState_Timeout: {
643  ctx->sender_type = SENDER_SELF_2;
644  ctx->receive_type = RECEIVE_NORMAL;
645  ctx->receive_timeout = 1;
646  break;
647  }
648 
649  case RtemsEventReqSendReceive_Pre_ReceiverState_Lower: {
650  ctx->sender_type = SENDER_WORKER;
651  ctx->sender_prio = PRIO_HIGH;
652  ctx->receive_type = RECEIVE_NORMAL;
653  break;
654  }
655 
656  case RtemsEventReqSendReceive_Pre_ReceiverState_Equal: {
657  ctx->sender_type = SENDER_WORKER;
658  ctx->sender_prio = PRIO_NORMAL;
659  ctx->receive_type = RECEIVE_NORMAL;
660  break;
661  }
662 
663  case RtemsEventReqSendReceive_Pre_ReceiverState_Higher: {
664  ctx->sender_type = SENDER_WORKER;
665  ctx->sender_prio = PRIO_LOW;
666  ctx->receive_type = RECEIVE_NORMAL;
667  break;
668  }
669 
670  case RtemsEventReqSendReceive_Pre_ReceiverState_Other: {
671  ctx->sender_type = SENDER_WORKER;
672  ctx->sender_prio = PRIO_OTHER;
673  ctx->receive_type = RECEIVE_NORMAL;
674  break;
675  }
676 
677  case RtemsEventReqSendReceive_Pre_ReceiverState_Intend: {
678  ctx->sender_type = SENDER_INTERRUPT;
679  ctx->receive_type = RECEIVE_INTERRUPT;
680  break;
681  }
682 
683  case RtemsEventReqSendReceive_Pre_ReceiverState_NA:
684  break;
685  }
686 }
687 
688 static void RtemsEventReqSendReceive_Pre_Satisfy_Prepare(
690  RtemsEventReqSendReceive_Pre_Satisfy state
691 )
692 {
693  switch ( state ) {
694  case RtemsEventReqSendReceive_Pre_Satisfy_All: {
696  break;
697  }
698 
699  case RtemsEventReqSendReceive_Pre_Satisfy_Any: {
701  break;
702  }
703 
704  case RtemsEventReqSendReceive_Pre_Satisfy_NA:
705  break;
706  }
707 }
708 
709 static void RtemsEventReqSendReceive_Post_SendStatus_Check(
711  RtemsEventReqSendReceive_Post_SendStatus state
712 )
713 {
714  switch ( state ) {
715  case RtemsEventReqSendReceive_Post_SendStatus_Ok: {
716  T_rsc_success( ctx->send_status );
717  break;
718  }
719 
720  case RtemsEventReqSendReceive_Post_SendStatus_InvId: {
721  T_rsc( ctx->send_status, RTEMS_INVALID_ID );
722  break;
723  }
724 
725  case RtemsEventReqSendReceive_Post_SendStatus_NA:
726  break;
727  }
728 }
729 
730 static void RtemsEventReqSendReceive_Post_ReceiveStatus_Check(
732  RtemsEventReqSendReceive_Post_ReceiveStatus state
733 )
734 {
735  switch ( state ) {
736  case RtemsEventReqSendReceive_Post_ReceiveStatus_None: {
737  T_eq_int( ctx->receive_condition_state, RECEIVE_COND_UNKNOWN );
738  T_eq_u32( GetPendingEvents( ctx ), 0 );
739  break;
740  }
741 
742  case RtemsEventReqSendReceive_Post_ReceiveStatus_Pending: {
743  T_eq_int( ctx->receive_condition_state, RECEIVE_COND_UNKNOWN );
744  T_eq_u32( GetPendingEvents( ctx ), ctx->events_to_send );
745  break;
746  }
747 
748  case RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout: {
749  T_rsc( ctx->receive_status, RTEMS_TIMEOUT );
750  T_eq_int( ctx->receive_condition_state, RECEIVE_COND_UNKNOWN );
751  T_eq_u32( GetPendingEvents( ctx ), ctx->events_to_send );
752  break;
753  }
754 
755  case RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied: {
756  T_rsc( ctx->receive_status, RTEMS_SUCCESSFUL );
757 
758  if ( ctx->receive_type != RECEIVE_NORMAL ) {
759  T_eq_int( ctx->receive_condition_state, RECEIVE_COND_SATSIFIED );
760  }
761 
762  T_eq_u32( ctx->received_events, ctx->events_to_send & INPUT_EVENTS );
763  T_eq_u32( GetPendingEvents( ctx ), ctx->events_to_send & ~INPUT_EVENTS );
764  break;
765  }
766 
767  case RtemsEventReqSendReceive_Post_ReceiveStatus_Unsatisfied: {
768  T_rsc( ctx->receive_status, RTEMS_UNSATISFIED );
769  T_eq_int( ctx->receive_condition_state, RECEIVE_COND_UNKNOWN );
770  T_eq_u32( GetPendingEvents( ctx ), ctx->events_to_send );
771  break;
772  }
773 
774  case RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked: {
775  T_eq_int( ctx->receive_condition_state, RECEIVE_COND_UNSATISFIED );
776  T_eq_u32( ctx->unsatisfied_pending, ctx->events_to_send );
777  break;
778  }
779 
780  case RtemsEventReqSendReceive_Post_ReceiveStatus_NA:
781  break;
782  }
783 }
784 
785 static void RtemsEventReqSendReceive_Post_SenderPreemption_Check(
787  RtemsEventReqSendReceive_Post_SenderPreemption state
788 )
789 {
790  T_thread_switch_log *log;
791  size_t i;
792 
793  log = &ctx->thread_switch_log.log;
794 
795  switch ( state ) {
796  case RtemsEventReqSendReceive_Post_SenderPreemption_No: {
797  /*
798  * There may be a thread switch to the runner thread if the sender thread
799  * was on another scheduler instance.
800  */
801 
802  T_le_sz( log->recorded, 1 );
803 
804  for ( i = 0; i < log->recorded; ++i ) {
805  T_ne_u32( log->events[ i ].executing, ctx->worker_id );
806  T_eq_u32( log->events[ i ].heir, ctx->runner_id );
807  }
808  break;
809  }
810 
811  case RtemsEventReqSendReceive_Post_SenderPreemption_Yes: {
812  T_eq_sz( log->recorded, 2 );
813  T_eq_u32( log->events[ 0 ].heir, ctx->runner_id );
814  T_eq_u32( log->events[ 1 ].heir, ctx->worker_id );
815  break;
816  }
817 
818  case RtemsEventReqSendReceive_Post_SenderPreemption_NA:
819  break;
820  }
821 }
822 
823 static void RtemsEventReqSendReceive_Setup(
825 )
826 {
828  rtems_task_priority prio;
829 
830  memset( ctx, 0, sizeof( *ctx ) );
832  ctx->runner_id = ctx->runner_thread->Object.id;
833  ctx->worker_wakeup = CreateWakeupSema();
834  ctx->runner_wakeup = CreateWakeupSema();
835 
837  T_rsc_success( sc );
838 
839  #if defined(RTEMS_SMP)
841  T_rsc_success( sc );
842  T_ne_u32( ctx->runner_sched, ctx->other_sched );
843  #endif
844 
845  prio = 0;
846  sc = rtems_task_set_priority( RTEMS_SELF, PRIO_NORMAL, &prio );
847  T_rsc_success( sc );
848  T_eq_u32( prio, PRIO_HIGH );
849 
850  sc = rtems_task_construct( &WorkerConfig, &ctx->worker_id );
851  T_assert_rsc_success( sc );
852 
853  sc = rtems_task_start( ctx->worker_id, Worker, (rtems_task_argument) ctx );
854  T_assert_rsc_success( sc );
855 }
856 
857 static void RtemsEventReqSendReceive_Setup_Wrap( void *arg )
858 {
860 
861  ctx = arg;
862  ctx->in_action_loop = false;
863  RtemsEventReqSendReceive_Setup( ctx );
864 }
865 
866 static void RtemsEventReqSendReceive_Teardown(
868 )
869 {
871  rtems_task_priority prio;
872 
873  prio = 0;
874  sc = rtems_task_set_priority( RTEMS_SELF, PRIO_HIGH, &prio );
875  T_rsc_success( sc );
876  T_eq_u32( prio, PRIO_NORMAL );
877 
878  if ( ctx->worker_id != 0 ) {
879  sc = rtems_task_delete( ctx->worker_id );
880  T_rsc_success( sc );
881  }
882 
883  DeleteWakeupSema( ctx->worker_wakeup );
884  DeleteWakeupSema( ctx->runner_wakeup );
885 }
886 
887 static void RtemsEventReqSendReceive_Teardown_Wrap( void *arg )
888 {
890 
891  ctx = arg;
892  ctx->in_action_loop = false;
893  RtemsEventReqSendReceive_Teardown( ctx );
894 }
895 
896 static size_t RtemsEventReqSendReceive_Scope( void *arg, char *buf, size_t n )
897 {
899 
900  ctx = arg;
901 
902  if ( ctx->in_action_loop ) {
903  return T_get_scope( RtemsEventReqSendReceive_PreDesc, buf, n, ctx->pcs );
904  }
905 
906  return 0;
907 }
908 
909 static T_fixture RtemsEventReqSendReceive_Fixture = {
910  .setup = RtemsEventReqSendReceive_Setup_Wrap,
911  .stop = NULL,
912  .teardown = RtemsEventReqSendReceive_Teardown_Wrap,
913  .scope = RtemsEventReqSendReceive_Scope,
914  .initial_context = &RtemsEventReqSendReceive_Instance
915 };
916 
917 static const uint8_t RtemsEventReqSendReceive_TransitionMap[][ 3 ] = {
918  {
919  RtemsEventReqSendReceive_Post_SendStatus_InvId,
920  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
921  RtemsEventReqSendReceive_Post_SenderPreemption_No
922  }, {
923  RtemsEventReqSendReceive_Post_SendStatus_InvId,
924  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
925  RtemsEventReqSendReceive_Post_SenderPreemption_No
926  }, {
927  RtemsEventReqSendReceive_Post_SendStatus_InvId,
928  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
929  RtemsEventReqSendReceive_Post_SenderPreemption_No
930  }, {
931  RtemsEventReqSendReceive_Post_SendStatus_InvId,
932  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
933  RtemsEventReqSendReceive_Post_SenderPreemption_No
934  }, {
935  RtemsEventReqSendReceive_Post_SendStatus_InvId,
936  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
937  RtemsEventReqSendReceive_Post_SenderPreemption_No
938  }, {
939  RtemsEventReqSendReceive_Post_SendStatus_InvId,
940  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
941  RtemsEventReqSendReceive_Post_SenderPreemption_No
942  }, {
943  RtemsEventReqSendReceive_Post_SendStatus_InvId,
944  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
945  RtemsEventReqSendReceive_Post_SenderPreemption_No
946  }, {
947  RtemsEventReqSendReceive_Post_SendStatus_InvId,
948  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
949  RtemsEventReqSendReceive_Post_SenderPreemption_No
950  }, {
951  RtemsEventReqSendReceive_Post_SendStatus_InvId,
952  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
953  RtemsEventReqSendReceive_Post_SenderPreemption_No
954  }, {
955  RtemsEventReqSendReceive_Post_SendStatus_InvId,
956  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
957  RtemsEventReqSendReceive_Post_SenderPreemption_No
958  }, {
959  RtemsEventReqSendReceive_Post_SendStatus_InvId,
960  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
961  RtemsEventReqSendReceive_Post_SenderPreemption_No
962  }, {
963  RtemsEventReqSendReceive_Post_SendStatus_InvId,
964  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
965  RtemsEventReqSendReceive_Post_SenderPreemption_No
966  }, {
967  RtemsEventReqSendReceive_Post_SendStatus_InvId,
968  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
969  RtemsEventReqSendReceive_Post_SenderPreemption_No
970  }, {
971  RtemsEventReqSendReceive_Post_SendStatus_InvId,
972  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
973  RtemsEventReqSendReceive_Post_SenderPreemption_No
974  }, {
975  RtemsEventReqSendReceive_Post_SendStatus_InvId,
976  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
977  RtemsEventReqSendReceive_Post_SenderPreemption_No
978  }, {
979  RtemsEventReqSendReceive_Post_SendStatus_InvId,
980  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
981  RtemsEventReqSendReceive_Post_SenderPreemption_No
982  }, {
983  RtemsEventReqSendReceive_Post_SendStatus_InvId,
984  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
985  RtemsEventReqSendReceive_Post_SenderPreemption_No
986  }, {
987  RtemsEventReqSendReceive_Post_SendStatus_InvId,
988  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
989  RtemsEventReqSendReceive_Post_SenderPreemption_No
990  }, {
991  RtemsEventReqSendReceive_Post_SendStatus_InvId,
992  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
993  RtemsEventReqSendReceive_Post_SenderPreemption_No
994  }, {
995  RtemsEventReqSendReceive_Post_SendStatus_InvId,
996  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
997  RtemsEventReqSendReceive_Post_SenderPreemption_No
998  }, {
999  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1000  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1001  RtemsEventReqSendReceive_Post_SenderPreemption_No
1002  }, {
1003  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1004  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1005  RtemsEventReqSendReceive_Post_SenderPreemption_No
1006  }, {
1007  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1008  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1009  RtemsEventReqSendReceive_Post_SenderPreemption_No
1010  }, {
1011  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1012  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1013  RtemsEventReqSendReceive_Post_SenderPreemption_No
1014  }, {
1015  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1016  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1017  RtemsEventReqSendReceive_Post_SenderPreemption_No
1018  }, {
1019  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1020  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1021  RtemsEventReqSendReceive_Post_SenderPreemption_No
1022  }, {
1023  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1024  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1025  RtemsEventReqSendReceive_Post_SenderPreemption_No
1026  }, {
1027  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1028  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1029  RtemsEventReqSendReceive_Post_SenderPreemption_No
1030  }, {
1031  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1032  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1033  RtemsEventReqSendReceive_Post_SenderPreemption_No
1034  }, {
1035  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1036  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1037  RtemsEventReqSendReceive_Post_SenderPreemption_No
1038  }, {
1039  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1040  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1041  RtemsEventReqSendReceive_Post_SenderPreemption_No
1042  }, {
1043  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1044  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1045  RtemsEventReqSendReceive_Post_SenderPreemption_No
1046  }, {
1047  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1048  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1049  RtemsEventReqSendReceive_Post_SenderPreemption_No
1050  }, {
1051  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1052  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1053  RtemsEventReqSendReceive_Post_SenderPreemption_No
1054  }, {
1055  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1056  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1057  RtemsEventReqSendReceive_Post_SenderPreemption_No
1058  }, {
1059  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1060  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1061  RtemsEventReqSendReceive_Post_SenderPreemption_No
1062  }, {
1063  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1064  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1065  RtemsEventReqSendReceive_Post_SenderPreemption_No
1066  }, {
1067  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1068  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1069  RtemsEventReqSendReceive_Post_SenderPreemption_No
1070  }, {
1071  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1072  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1073  RtemsEventReqSendReceive_Post_SenderPreemption_No
1074  }, {
1075  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1076  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1077  RtemsEventReqSendReceive_Post_SenderPreemption_No
1078  }, {
1079  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1080  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1081  RtemsEventReqSendReceive_Post_SenderPreemption_No
1082  }, {
1083  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1084  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1085  RtemsEventReqSendReceive_Post_SenderPreemption_No
1086  }, {
1087  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1088  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1089  RtemsEventReqSendReceive_Post_SenderPreemption_No
1090  }, {
1091  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1092  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1093  RtemsEventReqSendReceive_Post_SenderPreemption_No
1094  }, {
1095  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1096  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1097  RtemsEventReqSendReceive_Post_SenderPreemption_No
1098  }, {
1099  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1100  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1101  RtemsEventReqSendReceive_Post_SenderPreemption_No
1102  }, {
1103  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1104  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1105  RtemsEventReqSendReceive_Post_SenderPreemption_No
1106  }, {
1107  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1108  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1109  RtemsEventReqSendReceive_Post_SenderPreemption_No
1110  }, {
1111  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1112  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1113  RtemsEventReqSendReceive_Post_SenderPreemption_No
1114  }, {
1115  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1116  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1117  RtemsEventReqSendReceive_Post_SenderPreemption_No
1118  }, {
1119  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1120  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1121  RtemsEventReqSendReceive_Post_SenderPreemption_No
1122  }, {
1123  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1124  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1125  RtemsEventReqSendReceive_Post_SenderPreemption_No
1126  }, {
1127  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1128  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1129  RtemsEventReqSendReceive_Post_SenderPreemption_No
1130  }, {
1131  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1132  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1133  RtemsEventReqSendReceive_Post_SenderPreemption_No
1134  }, {
1135  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1136  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1137  RtemsEventReqSendReceive_Post_SenderPreemption_No
1138  }, {
1139  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1140  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1141  RtemsEventReqSendReceive_Post_SenderPreemption_No
1142  }, {
1143  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1144  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1145  RtemsEventReqSendReceive_Post_SenderPreemption_No
1146  }, {
1147  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1148  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1149  RtemsEventReqSendReceive_Post_SenderPreemption_No
1150  }, {
1151  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1152  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1153  RtemsEventReqSendReceive_Post_SenderPreemption_No
1154  }, {
1155  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1156  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1157  RtemsEventReqSendReceive_Post_SenderPreemption_No
1158  }, {
1159  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1160  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1161  RtemsEventReqSendReceive_Post_SenderPreemption_No
1162  }, {
1163  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1164  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1165  RtemsEventReqSendReceive_Post_SenderPreemption_No
1166  }, {
1167  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1168  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1169  RtemsEventReqSendReceive_Post_SenderPreemption_No
1170  }, {
1171  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1172  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1173  RtemsEventReqSendReceive_Post_SenderPreemption_No
1174  }, {
1175  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1176  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1177  RtemsEventReqSendReceive_Post_SenderPreemption_No
1178  }, {
1179  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1180  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1181  RtemsEventReqSendReceive_Post_SenderPreemption_No
1182  }, {
1183  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1184  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1185  RtemsEventReqSendReceive_Post_SenderPreemption_No
1186  }, {
1187  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1188  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1189  RtemsEventReqSendReceive_Post_SenderPreemption_No
1190  }, {
1191  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1192  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1193  RtemsEventReqSendReceive_Post_SenderPreemption_No
1194  }, {
1195  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1196  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1197  RtemsEventReqSendReceive_Post_SenderPreemption_No
1198  }, {
1199  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1200  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1201  RtemsEventReqSendReceive_Post_SenderPreemption_No
1202  }, {
1203  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1204  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1205  RtemsEventReqSendReceive_Post_SenderPreemption_No
1206  }, {
1207  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1208  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1209  RtemsEventReqSendReceive_Post_SenderPreemption_No
1210  }, {
1211  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1212  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1213  RtemsEventReqSendReceive_Post_SenderPreemption_No
1214  }, {
1215  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1216  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1217  RtemsEventReqSendReceive_Post_SenderPreemption_No
1218  }, {
1219  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1220  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1221  RtemsEventReqSendReceive_Post_SenderPreemption_No
1222  }, {
1223  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1224  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1225  RtemsEventReqSendReceive_Post_SenderPreemption_No
1226  }, {
1227  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1228  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1229  RtemsEventReqSendReceive_Post_SenderPreemption_No
1230  }, {
1231  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1232  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1233  RtemsEventReqSendReceive_Post_SenderPreemption_No
1234  }, {
1235  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1236  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1237  RtemsEventReqSendReceive_Post_SenderPreemption_No
1238  }, {
1239  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1240  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1241  RtemsEventReqSendReceive_Post_SenderPreemption_No
1242  }, {
1243  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1244  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1245  RtemsEventReqSendReceive_Post_SenderPreemption_No
1246  }, {
1247  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1248  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1249  RtemsEventReqSendReceive_Post_SenderPreemption_No
1250  }, {
1251  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1252  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1253  RtemsEventReqSendReceive_Post_SenderPreemption_No
1254  }, {
1255  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1256  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1257  RtemsEventReqSendReceive_Post_SenderPreemption_No
1258  }, {
1259  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1260  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1261  RtemsEventReqSendReceive_Post_SenderPreemption_No
1262  }, {
1263  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1264  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1265  RtemsEventReqSendReceive_Post_SenderPreemption_No
1266  }, {
1267  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1268  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1269  RtemsEventReqSendReceive_Post_SenderPreemption_No
1270  }, {
1271  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1272  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1273  RtemsEventReqSendReceive_Post_SenderPreemption_No
1274  }, {
1275  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1276  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1277  RtemsEventReqSendReceive_Post_SenderPreemption_No
1278  }, {
1279  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1280  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1281  RtemsEventReqSendReceive_Post_SenderPreemption_No
1282  }, {
1283  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1284  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1285  RtemsEventReqSendReceive_Post_SenderPreemption_No
1286  }, {
1287  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1288  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1289  RtemsEventReqSendReceive_Post_SenderPreemption_No
1290  }, {
1291  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1292  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1293  RtemsEventReqSendReceive_Post_SenderPreemption_No
1294  }, {
1295  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1296  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1297  RtemsEventReqSendReceive_Post_SenderPreemption_No
1298  }, {
1299  RtemsEventReqSendReceive_Post_SendStatus_InvId,
1300  RtemsEventReqSendReceive_Post_ReceiveStatus_None,
1301  RtemsEventReqSendReceive_Post_SenderPreemption_No
1302  }, {
1303  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1304  RtemsEventReqSendReceive_Post_ReceiveStatus_Pending,
1305  RtemsEventReqSendReceive_Post_SenderPreemption_No
1306  }, {
1307  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1308  RtemsEventReqSendReceive_Post_ReceiveStatus_Pending,
1309  RtemsEventReqSendReceive_Post_SenderPreemption_No
1310  }, {
1311  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1312  RtemsEventReqSendReceive_Post_ReceiveStatus_Unsatisfied,
1313  RtemsEventReqSendReceive_Post_SenderPreemption_No
1314  }, {
1315  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1316  RtemsEventReqSendReceive_Post_ReceiveStatus_Unsatisfied,
1317  RtemsEventReqSendReceive_Post_SenderPreemption_No
1318  }, {
1319  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1320  RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout,
1321  RtemsEventReqSendReceive_Post_SenderPreemption_No
1322  }, {
1323  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1324  RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout,
1325  RtemsEventReqSendReceive_Post_SenderPreemption_No
1326  }, {
1327  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1328  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1329  RtemsEventReqSendReceive_Post_SenderPreemption_No
1330  }, {
1331  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1332  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1333  RtemsEventReqSendReceive_Post_SenderPreemption_No
1334  }, {
1335  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1336  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1337  RtemsEventReqSendReceive_Post_SenderPreemption_No
1338  }, {
1339  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1340  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1341  RtemsEventReqSendReceive_Post_SenderPreemption_No
1342  }, {
1343  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1344  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1345  RtemsEventReqSendReceive_Post_SenderPreemption_No
1346  }, {
1347  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1348  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1349  RtemsEventReqSendReceive_Post_SenderPreemption_No
1350  }, {
1351 #if defined(RTEMS_SMP)
1352  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1353  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1354  RtemsEventReqSendReceive_Post_SenderPreemption_No
1355 #else
1356  RtemsEventReqSendReceive_Post_SendStatus_NA,
1357  RtemsEventReqSendReceive_Post_ReceiveStatus_NA,
1358  RtemsEventReqSendReceive_Post_SenderPreemption_NA
1359 #endif
1360  }, {
1361 #if defined(RTEMS_SMP)
1362  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1363  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1364  RtemsEventReqSendReceive_Post_SenderPreemption_No
1365 #else
1366  RtemsEventReqSendReceive_Post_SendStatus_NA,
1367  RtemsEventReqSendReceive_Post_ReceiveStatus_NA,
1368  RtemsEventReqSendReceive_Post_SenderPreemption_NA
1369 #endif
1370  }, {
1371  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1372  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1373  RtemsEventReqSendReceive_Post_SenderPreemption_No
1374  }, {
1375  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1376  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1377  RtemsEventReqSendReceive_Post_SenderPreemption_No
1378  }, {
1379  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1380  RtemsEventReqSendReceive_Post_ReceiveStatus_Pending,
1381  RtemsEventReqSendReceive_Post_SenderPreemption_No
1382  }, {
1383  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1384  RtemsEventReqSendReceive_Post_ReceiveStatus_Pending,
1385  RtemsEventReqSendReceive_Post_SenderPreemption_No
1386  }, {
1387  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1388  RtemsEventReqSendReceive_Post_ReceiveStatus_Unsatisfied,
1389  RtemsEventReqSendReceive_Post_SenderPreemption_No
1390  }, {
1391  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1392  RtemsEventReqSendReceive_Post_ReceiveStatus_Unsatisfied,
1393  RtemsEventReqSendReceive_Post_SenderPreemption_No
1394  }, {
1395  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1396  RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout,
1397  RtemsEventReqSendReceive_Post_SenderPreemption_No
1398  }, {
1399  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1400  RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout,
1401  RtemsEventReqSendReceive_Post_SenderPreemption_No
1402  }, {
1403  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1404  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1405  RtemsEventReqSendReceive_Post_SenderPreemption_No
1406  }, {
1407  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1408  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1409  RtemsEventReqSendReceive_Post_SenderPreemption_No
1410  }, {
1411  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1412  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1413  RtemsEventReqSendReceive_Post_SenderPreemption_No
1414  }, {
1415  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1416  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1417  RtemsEventReqSendReceive_Post_SenderPreemption_No
1418  }, {
1419  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1420  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1421  RtemsEventReqSendReceive_Post_SenderPreemption_No
1422  }, {
1423  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1424  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1425  RtemsEventReqSendReceive_Post_SenderPreemption_No
1426  }, {
1427 #if defined(RTEMS_SMP)
1428  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1429  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1430  RtemsEventReqSendReceive_Post_SenderPreemption_No
1431 #else
1432  RtemsEventReqSendReceive_Post_SendStatus_NA,
1433  RtemsEventReqSendReceive_Post_ReceiveStatus_NA,
1434  RtemsEventReqSendReceive_Post_SenderPreemption_NA
1435 #endif
1436  }, {
1437 #if defined(RTEMS_SMP)
1438  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1439  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1440  RtemsEventReqSendReceive_Post_SenderPreemption_No
1441 #else
1442  RtemsEventReqSendReceive_Post_SendStatus_NA,
1443  RtemsEventReqSendReceive_Post_ReceiveStatus_NA,
1444  RtemsEventReqSendReceive_Post_SenderPreemption_NA
1445 #endif
1446  }, {
1447  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1448  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1449  RtemsEventReqSendReceive_Post_SenderPreemption_No
1450  }, {
1451  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1452  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1453  RtemsEventReqSendReceive_Post_SenderPreemption_No
1454  }, {
1455  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1456  RtemsEventReqSendReceive_Post_ReceiveStatus_Pending,
1457  RtemsEventReqSendReceive_Post_SenderPreemption_No
1458  }, {
1459  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1460  RtemsEventReqSendReceive_Post_ReceiveStatus_Pending,
1461  RtemsEventReqSendReceive_Post_SenderPreemption_No
1462  }, {
1463  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1464  RtemsEventReqSendReceive_Post_ReceiveStatus_Unsatisfied,
1465  RtemsEventReqSendReceive_Post_SenderPreemption_No
1466  }, {
1467  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1468  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1469  RtemsEventReqSendReceive_Post_SenderPreemption_No
1470  }, {
1471  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1472  RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout,
1473  RtemsEventReqSendReceive_Post_SenderPreemption_No
1474  }, {
1475  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1476  RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout,
1477  RtemsEventReqSendReceive_Post_SenderPreemption_No
1478  }, {
1479  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1480  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1481  RtemsEventReqSendReceive_Post_SenderPreemption_No
1482  }, {
1483  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1484  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1485  RtemsEventReqSendReceive_Post_SenderPreemption_No
1486  }, {
1487  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1488  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1489  RtemsEventReqSendReceive_Post_SenderPreemption_No
1490  }, {
1491  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1492  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1493  RtemsEventReqSendReceive_Post_SenderPreemption_No
1494  }, {
1495  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1496  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1497  RtemsEventReqSendReceive_Post_SenderPreemption_No
1498  }, {
1499  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1500  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1501  RtemsEventReqSendReceive_Post_SenderPreemption_Yes
1502  }, {
1503 #if defined(RTEMS_SMP)
1504  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1505  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1506  RtemsEventReqSendReceive_Post_SenderPreemption_No
1507 #else
1508  RtemsEventReqSendReceive_Post_SendStatus_NA,
1509  RtemsEventReqSendReceive_Post_ReceiveStatus_NA,
1510  RtemsEventReqSendReceive_Post_SenderPreemption_NA
1511 #endif
1512  }, {
1513 #if defined(RTEMS_SMP)
1514  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1515  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1516  RtemsEventReqSendReceive_Post_SenderPreemption_No
1517 #else
1518  RtemsEventReqSendReceive_Post_SendStatus_NA,
1519  RtemsEventReqSendReceive_Post_ReceiveStatus_NA,
1520  RtemsEventReqSendReceive_Post_SenderPreemption_NA
1521 #endif
1522  }, {
1523  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1524  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1525  RtemsEventReqSendReceive_Post_SenderPreemption_No
1526  }, {
1527  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1528  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1529  RtemsEventReqSendReceive_Post_SenderPreemption_No
1530  }, {
1531  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1532  RtemsEventReqSendReceive_Post_ReceiveStatus_Pending,
1533  RtemsEventReqSendReceive_Post_SenderPreemption_No
1534  }, {
1535  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1536  RtemsEventReqSendReceive_Post_ReceiveStatus_Pending,
1537  RtemsEventReqSendReceive_Post_SenderPreemption_No
1538  }, {
1539  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1540  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1541  RtemsEventReqSendReceive_Post_SenderPreemption_No
1542  }, {
1543  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1544  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1545  RtemsEventReqSendReceive_Post_SenderPreemption_No
1546  }, {
1547  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1548  RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout,
1549  RtemsEventReqSendReceive_Post_SenderPreemption_No
1550  }, {
1551  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1552  RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout,
1553  RtemsEventReqSendReceive_Post_SenderPreemption_No
1554  }, {
1555  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1556  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1557  RtemsEventReqSendReceive_Post_SenderPreemption_No
1558  }, {
1559  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1560  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1561  RtemsEventReqSendReceive_Post_SenderPreemption_No
1562  }, {
1563  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1564  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1565  RtemsEventReqSendReceive_Post_SenderPreemption_No
1566  }, {
1567  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1568  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1569  RtemsEventReqSendReceive_Post_SenderPreemption_No
1570  }, {
1571  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1572  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1573  RtemsEventReqSendReceive_Post_SenderPreemption_Yes
1574  }, {
1575  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1576  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1577  RtemsEventReqSendReceive_Post_SenderPreemption_Yes
1578  }, {
1579 #if defined(RTEMS_SMP)
1580  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1581  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1582  RtemsEventReqSendReceive_Post_SenderPreemption_No
1583 #else
1584  RtemsEventReqSendReceive_Post_SendStatus_NA,
1585  RtemsEventReqSendReceive_Post_ReceiveStatus_NA,
1586  RtemsEventReqSendReceive_Post_SenderPreemption_NA
1587 #endif
1588  }, {
1589 #if defined(RTEMS_SMP)
1590  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1591  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1592  RtemsEventReqSendReceive_Post_SenderPreemption_No
1593 #else
1594  RtemsEventReqSendReceive_Post_SendStatus_NA,
1595  RtemsEventReqSendReceive_Post_ReceiveStatus_NA,
1596  RtemsEventReqSendReceive_Post_SenderPreemption_NA
1597 #endif
1598  }, {
1599  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1600  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1601  RtemsEventReqSendReceive_Post_SenderPreemption_No
1602  }, {
1603  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1604  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1605  RtemsEventReqSendReceive_Post_SenderPreemption_No
1606  }, {
1607  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1608  RtemsEventReqSendReceive_Post_ReceiveStatus_Pending,
1609  RtemsEventReqSendReceive_Post_SenderPreemption_No
1610  }, {
1611  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1612  RtemsEventReqSendReceive_Post_ReceiveStatus_Pending,
1613  RtemsEventReqSendReceive_Post_SenderPreemption_No
1614  }, {
1615  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1616  RtemsEventReqSendReceive_Post_ReceiveStatus_Unsatisfied,
1617  RtemsEventReqSendReceive_Post_SenderPreemption_No
1618  }, {
1619  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1620  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1621  RtemsEventReqSendReceive_Post_SenderPreemption_No
1622  }, {
1623  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1624  RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout,
1625  RtemsEventReqSendReceive_Post_SenderPreemption_No
1626  }, {
1627  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1628  RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout,
1629  RtemsEventReqSendReceive_Post_SenderPreemption_No
1630  }, {
1631  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1632  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1633  RtemsEventReqSendReceive_Post_SenderPreemption_No
1634  }, {
1635  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1636  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1637  RtemsEventReqSendReceive_Post_SenderPreemption_No
1638  }, {
1639  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1640  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1641  RtemsEventReqSendReceive_Post_SenderPreemption_No
1642  }, {
1643  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1644  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1645  RtemsEventReqSendReceive_Post_SenderPreemption_No
1646  }, {
1647  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1648  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1649  RtemsEventReqSendReceive_Post_SenderPreemption_No
1650  }, {
1651  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1652  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1653  RtemsEventReqSendReceive_Post_SenderPreemption_Yes
1654  }, {
1655 #if defined(RTEMS_SMP)
1656  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1657  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1658  RtemsEventReqSendReceive_Post_SenderPreemption_No
1659 #else
1660  RtemsEventReqSendReceive_Post_SendStatus_NA,
1661  RtemsEventReqSendReceive_Post_ReceiveStatus_NA,
1662  RtemsEventReqSendReceive_Post_SenderPreemption_NA
1663 #endif
1664  }, {
1665 #if defined(RTEMS_SMP)
1666  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1667  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1668  RtemsEventReqSendReceive_Post_SenderPreemption_No
1669 #else
1670  RtemsEventReqSendReceive_Post_SendStatus_NA,
1671  RtemsEventReqSendReceive_Post_ReceiveStatus_NA,
1672  RtemsEventReqSendReceive_Post_SenderPreemption_NA
1673 #endif
1674  }, {
1675  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1676  RtemsEventReqSendReceive_Post_ReceiveStatus_Blocked,
1677  RtemsEventReqSendReceive_Post_SenderPreemption_No
1678  }, {
1679  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1680  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1681  RtemsEventReqSendReceive_Post_SenderPreemption_No
1682  }, {
1683  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1684  RtemsEventReqSendReceive_Post_ReceiveStatus_Pending,
1685  RtemsEventReqSendReceive_Post_SenderPreemption_No
1686  }, {
1687  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1688  RtemsEventReqSendReceive_Post_ReceiveStatus_Pending,
1689  RtemsEventReqSendReceive_Post_SenderPreemption_No
1690  }, {
1691  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1692  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1693  RtemsEventReqSendReceive_Post_SenderPreemption_No
1694  }, {
1695  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1696  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1697  RtemsEventReqSendReceive_Post_SenderPreemption_No
1698  }, {
1699  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1700  RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout,
1701  RtemsEventReqSendReceive_Post_SenderPreemption_No
1702  }, {
1703  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1704  RtemsEventReqSendReceive_Post_ReceiveStatus_Timeout,
1705  RtemsEventReqSendReceive_Post_SenderPreemption_No
1706  }, {
1707  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1708  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1709  RtemsEventReqSendReceive_Post_SenderPreemption_No
1710  }, {
1711  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1712  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1713  RtemsEventReqSendReceive_Post_SenderPreemption_No
1714  }, {
1715  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1716  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1717  RtemsEventReqSendReceive_Post_SenderPreemption_No
1718  }, {
1719  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1720  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1721  RtemsEventReqSendReceive_Post_SenderPreemption_No
1722  }, {
1723  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1724  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1725  RtemsEventReqSendReceive_Post_SenderPreemption_Yes
1726  }, {
1727  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1728  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1729  RtemsEventReqSendReceive_Post_SenderPreemption_Yes
1730  }, {
1731 #if defined(RTEMS_SMP)
1732  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1733  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1734  RtemsEventReqSendReceive_Post_SenderPreemption_No
1735 #else
1736  RtemsEventReqSendReceive_Post_SendStatus_NA,
1737  RtemsEventReqSendReceive_Post_ReceiveStatus_NA,
1738  RtemsEventReqSendReceive_Post_SenderPreemption_NA
1739 #endif
1740  }, {
1741 #if defined(RTEMS_SMP)
1742  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1743  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1744  RtemsEventReqSendReceive_Post_SenderPreemption_No
1745 #else
1746  RtemsEventReqSendReceive_Post_SendStatus_NA,
1747  RtemsEventReqSendReceive_Post_ReceiveStatus_NA,
1748  RtemsEventReqSendReceive_Post_SenderPreemption_NA
1749 #endif
1750  }, {
1751  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1752  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1753  RtemsEventReqSendReceive_Post_SenderPreemption_No
1754  }, {
1755  RtemsEventReqSendReceive_Post_SendStatus_Ok,
1756  RtemsEventReqSendReceive_Post_ReceiveStatus_Satisfied,
1757  RtemsEventReqSendReceive_Post_SenderPreemption_No
1758  }
1759 };
1760 
1761 static const struct {
1762  uint8_t Skip : 1;
1763  uint8_t Pre_Id_NA : 1;
1764  uint8_t Pre_Send_NA : 1;
1765  uint8_t Pre_ReceiverState_NA : 1;
1766  uint8_t Pre_Satisfy_NA : 1;
1767 } RtemsEventReqSendReceive_TransitionInfo[] = {
1768  {
1769  0, 0, 1, 1, 1
1770  }, {
1771  0, 0, 1, 1, 1
1772  }, {
1773  0, 0, 1, 1, 1
1774  }, {
1775  0, 0, 1, 1, 1
1776  }, {
1777  0, 0, 1, 1, 1
1778  }, {
1779  0, 0, 1, 1, 1
1780  }, {
1781  0, 0, 1, 1, 1
1782  }, {
1783  0, 0, 1, 1, 1
1784  }, {
1785  0, 0, 1, 1, 1
1786  }, {
1787  0, 0, 1, 1, 1
1788  }, {
1789  0, 0, 1, 1, 1
1790  }, {
1791  0, 0, 1, 1, 1
1792  }, {
1793  0, 0, 1, 1, 1
1794  }, {
1795  0, 0, 1, 1, 1
1796  }, {
1797  0, 0, 1, 1, 1
1798  }, {
1799  0, 0, 1, 1, 1
1800  }, {
1801  0, 0, 1, 1, 1
1802  }, {
1803  0, 0, 1, 1, 1
1804  }, {
1805  0, 0, 1, 1, 1
1806  }, {
1807  0, 0, 1, 1, 1
1808  }, {
1809  0, 0, 1, 1, 1
1810  }, {
1811  0, 0, 1, 1, 1
1812  }, {
1813  0, 0, 1, 1, 1
1814  }, {
1815  0, 0, 1, 1, 1
1816  }, {
1817  0, 0, 1, 1, 1
1818  }, {
1819  0, 0, 1, 1, 1
1820  }, {
1821  0, 0, 1, 1, 1
1822  }, {
1823  0, 0, 1, 1, 1
1824  }, {
1825  0, 0, 1, 1, 1
1826  }, {
1827  0, 0, 1, 1, 1
1828  }, {
1829  0, 0, 1, 1, 1
1830  }, {
1831  0, 0, 1, 1, 1
1832  }, {
1833  0, 0, 1, 1, 1
1834  }, {
1835  0, 0, 1, 1, 1
1836  }, {
1837  0, 0, 1, 1, 1
1838  }, {
1839  0, 0, 1, 1, 1
1840  }, {
1841  0, 0, 1, 1, 1
1842  }, {
1843  0, 0, 1, 1, 1
1844  }, {
1845  0, 0, 1, 1, 1
1846  }, {
1847  0, 0, 1, 1, 1
1848  }, {
1849  0, 0, 1, 1, 1
1850  }, {
1851  0, 0, 1, 1, 1
1852  }, {
1853  0, 0, 1, 1, 1
1854  }, {
1855  0, 0, 1, 1, 1
1856  }, {
1857  0, 0, 1, 1, 1
1858  }, {
1859  0, 0, 1, 1, 1
1860  }, {
1861  0, 0, 1, 1, 1
1862  }, {
1863  0, 0, 1, 1, 1
1864  }, {
1865  0, 0, 1, 1, 1
1866  }, {
1867  0, 0, 1, 1, 1
1868  }, {
1869  0, 0, 1, 1, 1
1870  }, {
1871  0, 0, 1, 1, 1
1872  }, {
1873  0, 0, 1, 1, 1
1874  }, {
1875  0, 0, 1, 1, 1
1876  }, {
1877  0, 0, 1, 1, 1
1878  }, {
1879  0, 0, 1, 1, 1
1880  }, {
1881  0, 0, 1, 1, 1
1882  }, {
1883  0, 0, 1, 1, 1
1884  }, {
1885  0, 0, 1, 1, 1
1886  }, {
1887  0, 0, 1, 1, 1
1888  }, {
1889  0, 0, 1, 1, 1
1890  }, {
1891  0, 0, 1, 1, 1
1892  }, {
1893  0, 0, 1, 1, 1
1894  }, {
1895  0, 0, 1, 1, 1
1896  }, {
1897  0, 0, 1, 1, 1
1898  }, {
1899  0, 0, 1, 1, 1
1900  }, {
1901  0, 0, 1, 1, 1
1902  }, {
1903  0, 0, 1, 1, 1
1904  }, {
1905  0, 0, 1, 1, 1
1906  }, {
1907  0, 0, 1, 1, 1
1908  }, {
1909  0, 0, 1, 1, 1
1910  }, {
1911  0, 0, 1, 1, 1
1912  }, {
1913  0, 0, 1, 1, 1
1914  }, {
1915  0, 0, 1, 1, 1
1916  }, {
1917  0, 0, 1, 1, 1
1918  }, {
1919  0, 0, 1, 1, 1
1920  }, {
1921  0, 0, 1, 1, 1
1922  }, {
1923  0, 0, 1, 1, 1
1924  }, {
1925  0, 0, 1, 1, 1
1926  }, {
1927  0, 0, 1, 1, 1
1928  }, {
1929  0, 0, 1, 1, 1
1930  }, {
1931  0, 0, 1, 1, 1
1932  }, {
1933  0, 0, 1, 1, 1
1934  }, {
1935  0, 0, 1, 1, 1
1936  }, {
1937  0, 0, 1, 1, 1
1938  }, {
1939  0, 0, 1, 1, 1
1940  }, {
1941  0, 0, 1, 1, 1
1942  }, {
1943  0, 0, 1, 1, 1
1944  }, {
1945  0, 0, 1, 1, 1
1946  }, {
1947  0, 0, 1, 1, 1
1948  }, {
1949  0, 0, 1, 1, 1
1950  }, {
1951  0, 0, 1, 1, 1
1952  }, {
1953  0, 0, 1, 1, 1
1954  }, {
1955  0, 0, 1, 1, 1
1956  }, {
1957  0, 0, 1, 1, 1
1958  }, {
1959  0, 0, 1, 1, 1
1960  }, {
1961  0, 0, 0, 0, 1
1962  }, {
1963  0, 0, 0, 0, 1
1964  }, {
1965  0, 0, 0, 0, 0
1966  }, {
1967  0, 0, 0, 0, 0
1968  }, {
1969  0, 0, 0, 0, 0
1970  }, {
1971  0, 0, 0, 0, 0
1972  }, {
1973  0, 0, 0, 0, 0
1974  }, {
1975  0, 0, 0, 0, 0
1976  }, {
1977  0, 0, 0, 0, 0
1978  }, {
1979  0, 0, 0, 0, 0
1980  }, {
1981  0, 0, 0, 0, 0
1982  }, {
1983  0, 0, 0, 0, 0
1984  }, {
1985 #if defined(RTEMS_SMP)
1986  0, 0, 0, 0, 0
1987 #else
1988  1, 0, 0, 0, 0
1989 #endif
1990  }, {
1991 #if defined(RTEMS_SMP)
1992  0, 0, 0, 0, 0
1993 #else
1994  1, 0, 0, 0, 0
1995 #endif
1996  }, {
1997  0, 0, 0, 0, 0
1998  }, {
1999  0, 0, 0, 0, 0
2000  }, {
2001  0, 0, 0, 0, 1
2002  }, {
2003  0, 0, 0, 0, 1
2004  }, {
2005  0, 0, 0, 0, 0
2006  }, {
2007  0, 0, 0, 0, 0
2008  }, {
2009  0, 0, 0, 0, 0
2010  }, {
2011  0, 0, 0, 0, 0
2012  }, {
2013  0, 0, 0, 0, 0
2014  }, {
2015  0, 0, 0, 0, 0
2016  }, {
2017  0, 0, 0, 0, 0
2018  }, {
2019  0, 0, 0, 0, 0
2020  }, {
2021  0, 0, 0, 0, 0
2022  }, {
2023  0, 0, 0, 0, 0
2024  }, {
2025 #if defined(RTEMS_SMP)
2026  0, 0, 0, 0, 0
2027 #else
2028  1, 0, 0, 0, 0
2029 #endif
2030  }, {
2031 #if defined(RTEMS_SMP)
2032  0, 0, 0, 0, 0
2033 #else
2034  1, 0, 0, 0, 0
2035 #endif
2036  }, {
2037  0, 0, 0, 0, 0
2038  }, {
2039  0, 0, 0, 0, 0
2040  }, {
2041  0, 0, 0, 0, 1
2042  }, {
2043  0, 0, 0, 0, 1
2044  }, {
2045  0, 0, 0, 0, 0
2046  }, {
2047  0, 0, 0, 0, 0
2048  }, {
2049  0, 0, 0, 0, 0
2050  }, {
2051  0, 0, 0, 0, 0
2052  }, {
2053  0, 0, 0, 0, 0
2054  }, {
2055  0, 0, 0, 0, 0
2056  }, {
2057  0, 0, 0, 0, 0
2058  }, {
2059  0, 0, 0, 0, 0
2060  }, {
2061  0, 0, 0, 0, 0
2062  }, {
2063  0, 0, 0, 0, 0
2064  }, {
2065 #if defined(RTEMS_SMP)
2066  0, 0, 0, 0, 0
2067 #else
2068  1, 0, 0, 0, 0
2069 #endif
2070  }, {
2071 #if defined(RTEMS_SMP)
2072  0, 0, 0, 0, 0
2073 #else
2074  1, 0, 0, 0, 0
2075 #endif
2076  }, {
2077  0, 0, 0, 0, 0
2078  }, {
2079  0, 0, 0, 0, 0
2080  }, {
2081  0, 0, 0, 0, 1
2082  }, {
2083  0, 0, 0, 0, 1
2084  }, {
2085  0, 0, 0, 0, 0
2086  }, {
2087  0, 0, 0, 0, 0
2088  }, {
2089  0, 0, 0, 0, 0
2090  }, {
2091  0, 0, 0, 0, 0
2092  }, {
2093  0, 0, 0, 0, 0
2094  }, {
2095  0, 0, 0, 0, 0
2096  }, {
2097  0, 0, 0, 0, 0
2098  }, {
2099  0, 0, 0, 0, 0
2100  }, {
2101  0, 0, 0, 0, 0
2102  }, {
2103  0, 0, 0, 0, 0
2104  }, {
2105 #if defined(RTEMS_SMP)
2106  0, 0, 0, 0, 0
2107 #else
2108  1, 0, 0, 0, 0
2109 #endif
2110  }, {
2111 #if defined(RTEMS_SMP)
2112  0, 0, 0, 0, 0
2113 #else
2114  1, 0, 0, 0, 0
2115 #endif
2116  }, {
2117  0, 0, 0, 0, 0
2118  }, {
2119  0, 0, 0, 0, 0
2120  }, {
2121  0, 0, 0, 0, 1
2122  }, {
2123  0, 0, 0, 0, 1
2124  }, {
2125  0, 0, 0, 0, 0
2126  }, {
2127  0, 0, 0, 0, 0
2128  }, {
2129  0, 0, 0, 0, 0
2130  }, {
2131  0, 0, 0, 0, 0
2132  }, {
2133  0, 0, 0, 0, 0
2134  }, {
2135  0, 0, 0, 0, 0
2136  }, {
2137  0, 0, 0, 0, 0
2138  }, {
2139  0, 0, 0, 0, 0
2140  }, {
2141  0, 0, 0, 0, 0
2142  }, {
2143  0, 0, 0, 0, 0
2144  }, {
2145 #if defined(RTEMS_SMP)
2146  0, 0, 0, 0, 0
2147 #else
2148  1, 0, 0, 0, 0
2149 #endif
2150  }, {
2151 #if defined(RTEMS_SMP)
2152  0, 0, 0, 0, 0
2153 #else
2154  1, 0, 0, 0, 0
2155 #endif
2156  }, {
2157  0, 0, 0, 0, 0
2158  }, {
2159  0, 0, 0, 0, 0
2160  }, {
2161  0, 0, 0, 0, 1
2162  }, {
2163  0, 0, 0, 0, 1
2164  }, {
2165  0, 0, 0, 0, 0
2166  }, {
2167  0, 0, 0, 0, 0
2168  }, {
2169  0, 0, 0, 0, 0
2170  }, {
2171  0, 0, 0, 0, 0
2172  }, {
2173  0, 0, 0, 0, 0
2174  }, {
2175  0, 0, 0, 0, 0
2176  }, {
2177  0, 0, 0, 0, 0
2178  }, {
2179  0, 0, 0, 0, 0
2180  }, {
2181  0, 0, 0, 0, 0
2182  }, {
2183  0, 0, 0, 0, 0
2184  }, {
2185 #if defined(RTEMS_SMP)
2186  0, 0, 0, 0, 0
2187 #else
2188  1, 0, 0, 0, 0
2189 #endif
2190  }, {
2191 #if defined(RTEMS_SMP)
2192  0, 0, 0, 0, 0
2193 #else
2194  1, 0, 0, 0, 0
2195 #endif
2196  }, {
2197  0, 0, 0, 0, 0
2198  }, {
2199  0, 0, 0, 0, 0
2200  }
2201 };
2202 
2203 static void RtemsEventReqSendReceive_Prepare(
2205 )
2206 {
2207  ctx->events_to_send = 0;
2209  ctx->received_events = 0xffffffff;
2210  ctx->receive_option_set = 0;
2212  ctx->sender_type = SENDER_NONE;
2213  ctx->sender_prio = PRIO_NORMAL;
2214  ctx->receive_type = RECEIVE_SKIP;
2215  ctx->receive_condition_state = RECEIVE_COND_UNKNOWN;
2216  ctx->unsatisfied_pending = 0xffffffff;
2217  memset( &ctx->thread_switch_log, 0, sizeof( ctx->thread_switch_log ) );
2218  T_eq_u32( GetPendingEvents( ctx ), 0 );
2220 }
2221 
2222 static void RtemsEventReqSendReceive_Action(
2224 )
2225 {
2226  if ( ctx->sender_type == SENDER_SELF ) {
2227  SendAction( ctx );
2228  } else if ( ctx->sender_type == SENDER_WORKER ) {
2229  Wakeup( ctx->worker_wakeup );
2230  }
2231 
2232  if ( ctx->receive_type == RECEIVE_NORMAL ) {
2233  ctx->receive_status = ( *ctx->receive )(
2234  INPUT_EVENTS,
2235  ctx->receive_option_set,
2236  ctx->receive_timeout,
2237  &ctx->received_events
2238  );
2239  } else if ( ctx->receive_type == RECEIVE_INTERRUPT ) {
2240  T_interrupt_test_state state;
2241 
2242  state = T_interrupt_test( &InterruptConfig, ctx );
2243  T_eq_int( state, T_INTERRUPT_TEST_DONE );
2244  }
2245 
2246  if ( ctx->sender_type == SENDER_SELF_2 ) {
2247  SendAction( ctx );
2248  } else if ( ctx->sender_type == SENDER_WORKER ) {
2249  rtems_status_code sc;
2250  rtems_task_priority prio;
2251 
2252  Wait( ctx->runner_wakeup );
2253 
2254  prio = 0;
2255  sc = rtems_task_set_priority( ctx->worker_id, PRIO_LOW, &prio );
2256  T_rsc_success( sc );
2257  T_eq_u32( prio, PRIO_HIGH );
2258  }
2259 }
2260 
2261 static void RtemsEventReqSendReceive_Cleanup(
2263 )
2264 {
2265  rtems_status_code sc;
2266  rtems_event_set events;
2267 
2268  events = 0;
2269  sc = ( *ctx->receive )(
2272  0,
2273  &events
2274  );
2275  if ( sc == RTEMS_SUCCESSFUL ) {
2276  T_quiet_ne_u32( events, 0 );
2277  } else {
2278  T_quiet_rsc( sc, RTEMS_UNSATISFIED );
2279  T_quiet_eq_u32( events, 0 );
2280  }
2281 }
2282 
2283 static T_fixture_node RtemsEventReqSendReceive_Node;
2284 
2288  rtems_event_set ( *get_pending_events )( Thread_Control * ),
2289  unsigned int wait_class,
2290  int waiting_for_event
2291 )
2292 {
2294  size_t index;
2295 
2296  ctx = T_push_fixture(
2297  &RtemsEventReqSendReceive_Node,
2298  &RtemsEventReqSendReceive_Fixture
2299  );
2300 
2301  ctx->send = send;
2302  ctx->receive = receive;
2303  ctx->get_pending_events = get_pending_events;
2304  ctx->wait_class = wait_class;
2305  ctx->waiting_for_event = waiting_for_event;
2306  ctx->in_action_loop = true;
2307  index = 0;
2308 
2309  for (
2310  ctx->pcs[ 0 ] = RtemsEventReqSendReceive_Pre_Id_InvId;
2311  ctx->pcs[ 0 ] < RtemsEventReqSendReceive_Pre_Id_NA;
2312  ++ctx->pcs[ 0 ]
2313  ) {
2314  if ( RtemsEventReqSendReceive_TransitionInfo[ index ].Pre_Id_NA ) {
2315  ctx->pcs[ 0 ] = RtemsEventReqSendReceive_Pre_Id_NA;
2316  index += ( RtemsEventReqSendReceive_Pre_Id_NA - 1 )
2317  * RtemsEventReqSendReceive_Pre_Send_NA
2318  * RtemsEventReqSendReceive_Pre_ReceiverState_NA
2319  * RtemsEventReqSendReceive_Pre_Satisfy_NA;
2320  }
2321 
2322  for (
2323  ctx->pcs[ 1 ] = RtemsEventReqSendReceive_Pre_Send_Zero;
2324  ctx->pcs[ 1 ] < RtemsEventReqSendReceive_Pre_Send_NA;
2325  ++ctx->pcs[ 1 ]
2326  ) {
2327  if ( RtemsEventReqSendReceive_TransitionInfo[ index ].Pre_Send_NA ) {
2328  ctx->pcs[ 1 ] = RtemsEventReqSendReceive_Pre_Send_NA;
2329  index += ( RtemsEventReqSendReceive_Pre_Send_NA - 1 )
2330  * RtemsEventReqSendReceive_Pre_ReceiverState_NA
2331  * RtemsEventReqSendReceive_Pre_Satisfy_NA;
2332  }
2333 
2334  for (
2335  ctx->pcs[ 2 ] = RtemsEventReqSendReceive_Pre_ReceiverState_NotWaiting;
2336  ctx->pcs[ 2 ] < RtemsEventReqSendReceive_Pre_ReceiverState_NA;
2337  ++ctx->pcs[ 2 ]
2338  ) {
2339  if ( RtemsEventReqSendReceive_TransitionInfo[ index ].Pre_ReceiverState_NA ) {
2340  ctx->pcs[ 2 ] = RtemsEventReqSendReceive_Pre_ReceiverState_NA;
2341  index += ( RtemsEventReqSendReceive_Pre_ReceiverState_NA - 1 )
2342  * RtemsEventReqSendReceive_Pre_Satisfy_NA;
2343  }
2344 
2345  for (
2346  ctx->pcs[ 3 ] = RtemsEventReqSendReceive_Pre_Satisfy_All;
2347  ctx->pcs[ 3 ] < RtemsEventReqSendReceive_Pre_Satisfy_NA;
2348  ++ctx->pcs[ 3 ]
2349  ) {
2350  if ( RtemsEventReqSendReceive_TransitionInfo[ index ].Pre_Satisfy_NA ) {
2351  ctx->pcs[ 3 ] = RtemsEventReqSendReceive_Pre_Satisfy_NA;
2352  index += ( RtemsEventReqSendReceive_Pre_Satisfy_NA - 1 );
2353  }
2354 
2355  if ( RtemsEventReqSendReceive_TransitionInfo[ index ].Skip ) {
2356  ++index;
2357  continue;
2358  }
2359 
2360  RtemsEventReqSendReceive_Prepare( ctx );
2361  RtemsEventReqSendReceive_Pre_Id_Prepare( ctx, ctx->pcs[ 0 ] );
2362  RtemsEventReqSendReceive_Pre_Send_Prepare( ctx, ctx->pcs[ 1 ] );
2363  RtemsEventReqSendReceive_Pre_ReceiverState_Prepare(
2364  ctx,
2365  ctx->pcs[ 2 ]
2366  );
2367  RtemsEventReqSendReceive_Pre_Satisfy_Prepare( ctx, ctx->pcs[ 3 ] );
2368  RtemsEventReqSendReceive_Action( ctx );
2369  RtemsEventReqSendReceive_Post_SendStatus_Check(
2370  ctx,
2371  RtemsEventReqSendReceive_TransitionMap[ index ][ 0 ]
2372  );
2373  RtemsEventReqSendReceive_Post_ReceiveStatus_Check(
2374  ctx,
2375  RtemsEventReqSendReceive_TransitionMap[ index ][ 1 ]
2376  );
2377  RtemsEventReqSendReceive_Post_SenderPreemption_Check(
2378  ctx,
2379  RtemsEventReqSendReceive_TransitionMap[ index ][ 2 ]
2380  );
2381  RtemsEventReqSendReceive_Cleanup( ctx );
2382  ++index;
2383  }
2384  }
2385  }
2386  }
2387 
2388  T_pop_fixture();
2389 }
2390 
unsigned int wait_class
This member contains a copy of the corresponding RtemsEventReqSendReceive_Run() parameter.
rtems_id runner_id
This member contains the ID of the runner task.
#define RTEMS_NO_WAIT
This option constant indicates that the task does not want to wait on the resource.
Definition: options.h:112
bool in_action_loop
This member indicates if the test action loop is currently executed.
#define RTEMS_DEFAULT_OPTIONS
This option constant is the default option set.
Definition: options.h:79
rtems_id runner_wakeup
This member contains the ID of the semaphore used to wake up the runner task.
#define RTEMS_EVENT_7
This constant defines the bit in the event set associated with event 7.
Definition: event.h:447
rtems_status_code receive_status
This member contains the status of the event receive action.
uint32_t rtems_option
This type is used to represent an option set.
Definition: options.h:121
rtems_status_code send_status
This member contains the status of the event send action.
#define RTEMS_EVENT_5
This constant defines the bit in the event set associated with event 5.
Definition: event.h:427
rtems_option receive_option_set
This member defines the option set used for the event receive action.
rtems_id worker_wakeup
This member contains the ID of the semaphore used to wake up the worker task.
rtems_status_code(* send)(rtems_id, rtems_event_set)
This member contains a copy of the corresponding RtemsEventReqSendReceive_Run() parameter.
This status code indicates that the request was not satisfied.
Definition: status.h:154
rtems_name name
This member defines the name of the task.
Definition: tasks.h:138
ReceiveTypes receive_type
This member contains the scheduler ID of the runner task.
#define rtems_build_name(_C1, _C2, _C3, _C4)
%
Definition: object.h:179
rtems_status_code rtems_task_delete(rtems_id id)
%
Definition: taskdelete.c:24
#define RTEMS_ALL_EVENTS
This constant contains all events in an event set.
Definition: event.h:207
#define RTEMS_EVENT_23
This constant defines the bit in the event set associated with event 23.
Definition: event.h:377
rtems_interval receive_timeout
This member defines the timeout used for the event receive action.
rtems_status_code rtems_scheduler_ident_by_processor(uint32_t cpu_index, rtems_id *id)
Identifies a scheduler instance by a processor index.
static __inline__ Thread_Wait_flags _Thread_Wait_flags_get(const Thread_Control *the_thread)
Gets the thread&#39;s wait flags according to the ATOMIC_ORDER_RELAXED.
Definition: threadimpl.h:2215
rtems_status_code rtems_semaphore_release(rtems_id id)
%
Definition: semrelease.c:28
This structure defines the configuration of a task constructed by rtems_task_construct().
Definition: tasks.h:134
#define RTEMS_NO_TIMEOUT
This clock tick interval constant indicates that the calling task is willing to wait potentially fore...
Definition: types.h:237
Thread_Control * runner_thread
This member contains the TCB of the runner task.
rtems_status_code rtems_task_start(rtems_id id, rtems_task_entry entry_point, rtems_task_argument argument)
%
Definition: taskstart.c:25
static __inline__ struct _Thread_Control * _Thread_Get_executing(void)
Returns the thread control block of the executing thread.
Definition: percpu.h:878
CPU_Uint32ptr rtems_task_argument
This type is used to represent task argument values.
Definition: tasks.h:115
uint32_t rtems_task_priority
%
Definition: tasks.h:94
int waiting_for_event
This member contains a copy of the corresponding RtemsEventReqSendReceive_Run() parameter.
rtems_status_code rtems_semaphore_create(rtems_name name, uint32_t count, rtems_attribute attribute_set, rtems_task_priority priority_ceiling, rtems_id *id)
Creates a semaphore with the specified properties and returns its identifier.
Definition: semcreate.c:34
This status code indicates successful completion.
Definition: status.h:86
rtems_id other_sched
This member contains the scheduler ID of another scheduler which is not used by the runner task...
#define RTEMS_SIMPLE_BINARY_SEMAPHORE
This attribute constant indicates that the Classic API Semaphore object shall be a simple binary sema...
Definition: attr.h:292
#define RTEMS_SELF
%
Definition: tasks.h:1046
#define THREAD_WAIT_STATE_READY_AGAIN
Indicates that a condition to end the thread wait occurred.
Definition: threadimpl.h:2163
static __inline__ void _Thread_Wait_flags_set(Thread_Control *the_thread, Thread_Wait_flags flags)
Sets the thread&#39;s wait flags.
Definition: threadimpl.h:2196
#define RTEMS_PENDING_EVENTS
This constant used to get the set of pending events in rtems_event_receive().
Definition: event.h:477
rtems_status_code
This enumeration provides status codes for directives of the Classic API.
Definition: status.h:82
unsigned int Thread_Wait_flags
This type is able to contain several flags used to control the wait class and state of a thread...
Definition: thread.h:383
SenderTypes sender_type
This member defines the sender type to perform the event send action.
#define RTEMS_ALIGNED(_alignment)
Instructs the compiler in a declaration or definition to enforce the specified alignment.
Definition: basedefs.h:389
rtems_status_code rtems_semaphore_obtain(rtems_id id, rtems_option option_set, rtems_interval timeout)
%
Definition: semobtain.c:51
This status code indicates that an object was in wrong state for the requested operation.
Definition: status.h:160
Objects_Control Object
Definition: thread.h:727
#define RTEMS_MINIMUM_STACK_SIZE
%
Definition: tasks.h:973
States_Control current_state
Definition: thread.h:749
rtems_status_code rtems_task_set_priority(rtems_id id, rtems_task_priority new_priority, rtems_task_priority *old_priority)
%
#define THREAD_WAIT_STATE_BLOCKED
Indicates that the thread completed the blocking operation.
Definition: threadimpl.h:2156
ReceiveConditionStates receive_condition_state
This member contains the event conditon state of the receiver task after the event send action...
Priorities sender_prio
This member defines the sender task priority.
rtems_status_code(* receive)(rtems_event_set, rtems_option, rtems_interval, rtems_event_set *)
This member contains a copy of the corresponding RtemsEventReqSendReceive_Run() parameter.
#define RTEMS_EVENT_ANY
This option constant indicates that the task wishes to wait until at least one of the events of inter...
Definition: options.h:99
Definition: test.h:61
T_thread_switch_log_4 thread_switch_log
This member contains the thread switch log.
rtems_id worker_id
This member contains the task ID of the worker task.
rtems_event_set(* get_pending_events)(Thread_Control *)
This member contains a copy of the corresponding RtemsEventReqSendReceive_Run() parameter.
rtems_status_code rtems_task_get_scheduler(rtems_id task_id, rtems_id *scheduler_id)
%
Watchdog_Interval rtems_interval
This type is used to represent clock tick intervals.
Definition: types.h:90
This status code indicates that an object identifier was invalid.
Definition: status.h:106
#define RTEMS_TASK_STORAGE_SIZE(_size, _attributes)
Returns the recommended task storage area size for the specified size and task attributes.
Definition: tasks.h:1157
Objects_Id rtems_id
Values of this type identify an RTEMS object.
Definition: types.h:99
Test context for spec:/rtems/event/req/send-receive test case.
rtems_event_set events_to_send
This member defines the events to send for the event send action.
#define RTEMS_DEFAULT_MODES
This task mode constant represents the default mode set.
Definition: modes.h:137
rtems_id runner_sched
This member contains the scheduler ID of scheduler used by the runner task.
This status code indicates that a blocking directive timed out.
Definition: status.h:117
rtems_event_set received_events
This member contains the events received by the event receive action.
Inlined Routines from the Thread Handler.
#define THREAD_WAIT_FLAGS_INITIAL
The initial thread wait flags value set by _Thread_Initialize().
Definition: threadimpl.h:2137
rtems_status_code rtems_task_construct(const rtems_task_config *config, rtems_id *id)
Constructs a task from the specified the task configuration.
Definition: taskconstruct.c:73
rtems_status_code rtems_task_set_scheduler(rtems_id task_id, rtems_id scheduler_id, rtems_task_priority priority)
%
size_t pcs[4]
This member defines the pre-condition states for the next action.
uint32_t rtems_event_set
This integer type can hold an event set of up to 32 events represented as a bit field.
Definition: event.h:94
rtems_id receiver_id
This member defines the receiver ID used for the event send action.
rtems_status_code rtems_semaphore_delete(rtems_id id)
%
Definition: semdelete.c:24
#define THREAD_WAIT_STATE_INTEND_TO_BLOCK
Indicates that the thread begins with the blocking operation.
Definition: threadimpl.h:2151
rtems_event_set unsatisfied_pending
This member contains the pending events after an event send action which did not satsify the event co...
#define RTEMS_TASK_STORAGE_ALIGNMENT
This constant defines the recommended alignment of a task storage area in bytes.
Definition: tasks.h:1135
#define RTEMS_WAIT
This option constant indicates that the task wants to wait on the resource.
Definition: options.h:134
void RtemsEventReqSendReceive_Run(rtems_status_code(*send)(rtems_id, rtems_event_set), rtems_status_code(*receive)(rtems_event_set, rtems_option, rtems_interval, rtems_event_set *), rtems_event_set(*get_pending_events)(Thread_Control *), unsigned int wait_class, int waiting_for_event)
Runs the parameterized test case.
#define RTEMS_EVENT_ALL
This option constant indicates that the task wishes to wait until all events of interest are availabl...
Definition: options.h:89
Objects_Id id
Definition: objectdata.h:43