File indexing completed on 2025-05-11 08:24:53
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
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051 #ifdef HAVE_CONFIG_H
0052 #include "config.h"
0053 #endif
0054
0055 #include <rtems.h>
0056 #include <rtems/rtems/timerimpl.h>
0057
0058 #include "tx-support.h"
0059
0060 #include <rtems/test.h>
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070 typedef enum {
0071 RtemsTimerReqInitiateServer_Pre_Priority_Valid,
0072 RtemsTimerReqInitiateServer_Pre_Priority_Default,
0073 RtemsTimerReqInitiateServer_Pre_Priority_Invalid,
0074 RtemsTimerReqInitiateServer_Pre_Priority_NA
0075 } RtemsTimerReqInitiateServer_Pre_Priority;
0076
0077 typedef enum {
0078 RtemsTimerReqInitiateServer_Pre_Stack_Allocatable,
0079 RtemsTimerReqInitiateServer_Pre_Stack_TooLarge,
0080 RtemsTimerReqInitiateServer_Pre_Stack_NA
0081 } RtemsTimerReqInitiateServer_Pre_Stack;
0082
0083 typedef enum {
0084 RtemsTimerReqInitiateServer_Pre_Started_Yes,
0085 RtemsTimerReqInitiateServer_Pre_Started_No,
0086 RtemsTimerReqInitiateServer_Pre_Started_NA
0087 } RtemsTimerReqInitiateServer_Pre_Started;
0088
0089 typedef enum {
0090 RtemsTimerReqInitiateServer_Pre_TaskObj_Available,
0091 RtemsTimerReqInitiateServer_Pre_TaskObj_Unavailable,
0092 RtemsTimerReqInitiateServer_Pre_TaskObj_NA
0093 } RtemsTimerReqInitiateServer_Pre_TaskObj;
0094
0095 typedef enum {
0096 RtemsTimerReqInitiateServer_Post_Status_Ok,
0097 RtemsTimerReqInitiateServer_Post_Status_IncStat,
0098 RtemsTimerReqInitiateServer_Post_Status_InvPrio,
0099 RtemsTimerReqInitiateServer_Post_Status_TooMany,
0100 RtemsTimerReqInitiateServer_Post_Status_Unsat,
0101 RtemsTimerReqInitiateServer_Post_Status_NA
0102 } RtemsTimerReqInitiateServer_Post_Status;
0103
0104 typedef enum {
0105 RtemsTimerReqInitiateServer_Post_Started_Yes,
0106 RtemsTimerReqInitiateServer_Post_Started_No,
0107 RtemsTimerReqInitiateServer_Post_Started_NA
0108 } RtemsTimerReqInitiateServer_Post_Started;
0109
0110 typedef enum {
0111 RtemsTimerReqInitiateServer_Post_TaskPrio_Set,
0112 RtemsTimerReqInitiateServer_Post_TaskPrio_Nop,
0113 RtemsTimerReqInitiateServer_Post_TaskPrio_NA
0114 } RtemsTimerReqInitiateServer_Post_TaskPrio;
0115
0116 typedef enum {
0117 RtemsTimerReqInitiateServer_Post_TaskStack_Set,
0118 RtemsTimerReqInitiateServer_Post_TaskStack_Nop,
0119 RtemsTimerReqInitiateServer_Post_TaskStack_NA
0120 } RtemsTimerReqInitiateServer_Post_TaskStack;
0121
0122 typedef enum {
0123 RtemsTimerReqInitiateServer_Post_TaskAttr_Set,
0124 RtemsTimerReqInitiateServer_Post_TaskAttr_Nop,
0125 RtemsTimerReqInitiateServer_Post_TaskAttr_NA
0126 } RtemsTimerReqInitiateServer_Post_TaskAttr;
0127
0128 typedef struct {
0129 uint16_t Skip : 1;
0130 uint16_t Pre_Priority_NA : 1;
0131 uint16_t Pre_Stack_NA : 1;
0132 uint16_t Pre_Started_NA : 1;
0133 uint16_t Pre_TaskObj_NA : 1;
0134 uint16_t Post_Status : 3;
0135 uint16_t Post_Started : 2;
0136 uint16_t Post_TaskPrio : 2;
0137 uint16_t Post_TaskStack : 2;
0138 uint16_t Post_TaskAttr : 2;
0139 } RtemsTimerReqInitiateServer_Entry;
0140
0141
0142
0143
0144 typedef struct {
0145
0146
0147
0148
0149 rtems_task_priority before_priority;
0150
0151
0152
0153
0154
0155 size_t before_stack_size;
0156
0157
0158
0159
0160
0161 bool before_has_floating_point;
0162
0163
0164
0165
0166 rtems_task_priority priority;
0167
0168
0169
0170
0171 size_t stack_size;
0172
0173
0174
0175
0176
0177 rtems_status_code status;
0178
0179
0180
0181
0182
0183 void *task_objects;
0184
0185 struct {
0186
0187
0188
0189 size_t pcs[ 4 ];
0190
0191
0192
0193
0194 bool in_action_loop;
0195
0196
0197
0198
0199 size_t index;
0200
0201
0202
0203
0204 RtemsTimerReqInitiateServer_Entry entry;
0205
0206
0207
0208
0209
0210 bool skip;
0211 } Map;
0212 } RtemsTimerReqInitiateServer_Context;
0213
0214 static RtemsTimerReqInitiateServer_Context
0215 RtemsTimerReqInitiateServer_Instance;
0216
0217 static const char * const RtemsTimerReqInitiateServer_PreDesc_Priority[] = {
0218 "Valid",
0219 "Default",
0220 "Invalid",
0221 "NA"
0222 };
0223
0224 static const char * const RtemsTimerReqInitiateServer_PreDesc_Stack[] = {
0225 "Allocatable",
0226 "TooLarge",
0227 "NA"
0228 };
0229
0230 static const char * const RtemsTimerReqInitiateServer_PreDesc_Started[] = {
0231 "Yes",
0232 "No",
0233 "NA"
0234 };
0235
0236 static const char * const RtemsTimerReqInitiateServer_PreDesc_TaskObj[] = {
0237 "Available",
0238 "Unavailable",
0239 "NA"
0240 };
0241
0242 static const char * const * const RtemsTimerReqInitiateServer_PreDesc[] = {
0243 RtemsTimerReqInitiateServer_PreDesc_Priority,
0244 RtemsTimerReqInitiateServer_PreDesc_Stack,
0245 RtemsTimerReqInitiateServer_PreDesc_Started,
0246 RtemsTimerReqInitiateServer_PreDesc_TaskObj,
0247 NULL
0248 };
0249
0250 static bool ExistTimerServer( void )
0251 {
0252 return GetTimerServerTaskId() != RTEMS_INVALID_ID;
0253 }
0254
0255 static rtems_task_priority GetTimerServerPriority( void )
0256 {
0257 return GetPriority( GetTimerServerTaskId() );
0258 }
0259
0260 static size_t GetTimerServerStackSize( void )
0261 {
0262 rtems_tcb *tcb;
0263 rtems_id server_task_id;
0264 server_task_id = GetTimerServerTaskId();
0265 T_ne_u32( server_task_id, RTEMS_INVALID_ID );
0266 tcb = GetThread( server_task_id );
0267 T_not_null( tcb );
0268 return tcb->Start.Initial_stack.size;
0269 }
0270
0271 static bool HasTimerServerFloatingPoint( void )
0272 {
0273 rtems_tcb *tcb;
0274 rtems_id server_task_id;
0275 server_task_id = GetTimerServerTaskId();
0276 T_ne_u32( server_task_id, RTEMS_INVALID_ID );
0277 tcb = GetThread( server_task_id );
0278 T_not_null( tcb );
0279 return tcb->is_fp;
0280 }
0281
0282 static rtems_status_code AllocateTaskObject( void *arg, rtems_id *task_id )
0283 {
0284 (void) arg;
0285
0286 return rtems_task_create(
0287 rtems_build_name( 'T', 'A', ' ', 'N' ),
0288 PRIO_LOW,
0289 RTEMS_MINIMUM_STACK_SIZE,
0290 RTEMS_DEFAULT_MODES,
0291 RTEMS_DEFAULT_ATTRIBUTES,
0292 task_id
0293 );
0294 }
0295
0296 static void RtemsTimerReqInitiateServer_Pre_Priority_Prepare(
0297 RtemsTimerReqInitiateServer_Context *ctx,
0298 RtemsTimerReqInitiateServer_Pre_Priority state
0299 )
0300 {
0301 switch ( state ) {
0302 case RtemsTimerReqInitiateServer_Pre_Priority_Valid: {
0303
0304
0305
0306 ctx->priority = 13;
0307 break;
0308 }
0309
0310 case RtemsTimerReqInitiateServer_Pre_Priority_Default: {
0311
0312
0313
0314
0315 ctx->priority = RTEMS_TIMER_SERVER_DEFAULT_PRIORITY;
0316 break;
0317 }
0318
0319 case RtemsTimerReqInitiateServer_Pre_Priority_Invalid: {
0320
0321
0322
0323 ctx->priority = PRIO_INVALID;
0324 break;
0325 }
0326
0327 case RtemsTimerReqInitiateServer_Pre_Priority_NA:
0328 break;
0329 }
0330 }
0331
0332 static void RtemsTimerReqInitiateServer_Pre_Stack_Prepare(
0333 RtemsTimerReqInitiateServer_Context *ctx,
0334 RtemsTimerReqInitiateServer_Pre_Stack state
0335 )
0336 {
0337 switch ( state ) {
0338 case RtemsTimerReqInitiateServer_Pre_Stack_Allocatable: {
0339
0340
0341
0342
0343 ctx->stack_size = RTEMS_MINIMUM_STACK_SIZE;
0344 break;
0345 }
0346
0347 case RtemsTimerReqInitiateServer_Pre_Stack_TooLarge: {
0348
0349
0350
0351
0352 ctx->stack_size = SIZE_MAX;
0353 break;
0354 }
0355
0356 case RtemsTimerReqInitiateServer_Pre_Stack_NA:
0357 break;
0358 }
0359 }
0360
0361 static void RtemsTimerReqInitiateServer_Pre_Started_Prepare(
0362 RtemsTimerReqInitiateServer_Context *ctx,
0363 RtemsTimerReqInitiateServer_Pre_Started state
0364 )
0365 {
0366 switch ( state ) {
0367 case RtemsTimerReqInitiateServer_Pre_Started_Yes: {
0368
0369
0370
0371 rtems_status_code status;
0372
0373 if ( !ExistTimerServer() ) {
0374 status = rtems_timer_initiate_server(
0375 RTEMS_TIMER_SERVER_DEFAULT_PRIORITY,
0376 RTEMS_MINIMUM_STACK_SIZE,
0377 RTEMS_DEFAULT_ATTRIBUTES
0378 );
0379 T_rsc_success( status );
0380 }
0381 break;
0382 }
0383
0384 case RtemsTimerReqInitiateServer_Pre_Started_No: {
0385
0386
0387
0388 DeleteTimerServer();
0389 break;
0390 }
0391
0392 case RtemsTimerReqInitiateServer_Pre_Started_NA:
0393 break;
0394 }
0395 }
0396
0397 static void RtemsTimerReqInitiateServer_Pre_TaskObj_Prepare(
0398 RtemsTimerReqInitiateServer_Context *ctx,
0399 RtemsTimerReqInitiateServer_Pre_TaskObj state
0400 )
0401 {
0402 switch ( state ) {
0403 case RtemsTimerReqInitiateServer_Pre_TaskObj_Available: {
0404
0405
0406
0407
0408 break;
0409 }
0410
0411 case RtemsTimerReqInitiateServer_Pre_TaskObj_Unavailable: {
0412
0413
0414
0415 ctx->task_objects = T_seize_objects(
0416 AllocateTaskObject,
0417 NULL
0418 );
0419 break;
0420 }
0421
0422 case RtemsTimerReqInitiateServer_Pre_TaskObj_NA:
0423 break;
0424 }
0425 }
0426
0427 static void RtemsTimerReqInitiateServer_Post_Status_Check(
0428 RtemsTimerReqInitiateServer_Context *ctx,
0429 RtemsTimerReqInitiateServer_Post_Status state
0430 )
0431 {
0432 switch ( state ) {
0433 case RtemsTimerReqInitiateServer_Post_Status_Ok: {
0434
0435
0436
0437
0438 T_rsc_success( ctx->status );
0439 break;
0440 }
0441
0442 case RtemsTimerReqInitiateServer_Post_Status_IncStat: {
0443
0444
0445
0446
0447 T_rsc( ctx->status, RTEMS_INCORRECT_STATE );
0448 break;
0449 }
0450
0451 case RtemsTimerReqInitiateServer_Post_Status_InvPrio: {
0452
0453
0454
0455
0456 T_rsc( ctx->status, RTEMS_INVALID_PRIORITY );
0457 break;
0458 }
0459
0460 case RtemsTimerReqInitiateServer_Post_Status_TooMany: {
0461
0462
0463
0464
0465 T_rsc( ctx->status, RTEMS_TOO_MANY );
0466 break;
0467 }
0468
0469 case RtemsTimerReqInitiateServer_Post_Status_Unsat: {
0470
0471
0472
0473
0474 T_rsc( ctx->status, RTEMS_UNSATISFIED );
0475 break;
0476 }
0477
0478 case RtemsTimerReqInitiateServer_Post_Status_NA:
0479 break;
0480 }
0481 }
0482
0483 static void RtemsTimerReqInitiateServer_Post_Started_Check(
0484 RtemsTimerReqInitiateServer_Context *ctx,
0485 RtemsTimerReqInitiateServer_Post_Started state
0486 )
0487 {
0488 switch ( state ) {
0489 case RtemsTimerReqInitiateServer_Post_Started_Yes: {
0490
0491
0492
0493
0494 T_true( ExistTimerServer() );
0495 break;
0496 }
0497
0498 case RtemsTimerReqInitiateServer_Post_Started_No: {
0499
0500
0501
0502
0503 T_false( ExistTimerServer() );
0504 break;
0505 }
0506
0507 case RtemsTimerReqInitiateServer_Post_Started_NA:
0508 break;
0509 }
0510 }
0511
0512 static void RtemsTimerReqInitiateServer_Post_TaskPrio_Check(
0513 RtemsTimerReqInitiateServer_Context *ctx,
0514 RtemsTimerReqInitiateServer_Post_TaskPrio state
0515 )
0516 {
0517 switch ( state ) {
0518 case RtemsTimerReqInitiateServer_Post_TaskPrio_Set: {
0519
0520
0521
0522
0523
0524 if ( ctx->priority == RTEMS_TIMER_SERVER_DEFAULT_PRIORITY ) {
0525 T_eq_u32( GetTimerServerPriority(), 0 );
0526 } else {
0527 T_eq_u32( GetTimerServerPriority(), ctx->priority );
0528 }
0529 break;
0530 }
0531
0532 case RtemsTimerReqInitiateServer_Post_TaskPrio_Nop: {
0533
0534
0535
0536
0537 T_eq_u32( GetTimerServerPriority(), ctx->before_priority );
0538 break;
0539 }
0540
0541 case RtemsTimerReqInitiateServer_Post_TaskPrio_NA:
0542 break;
0543 }
0544 }
0545
0546 static void RtemsTimerReqInitiateServer_Post_TaskStack_Check(
0547 RtemsTimerReqInitiateServer_Context *ctx,
0548 RtemsTimerReqInitiateServer_Post_TaskStack state
0549 )
0550 {
0551 switch ( state ) {
0552 case RtemsTimerReqInitiateServer_Post_TaskStack_Set: {
0553
0554
0555
0556
0557
0558 T_ge_sz( GetTimerServerStackSize(), ctx->stack_size );
0559 break;
0560 }
0561
0562 case RtemsTimerReqInitiateServer_Post_TaskStack_Nop: {
0563
0564
0565
0566
0567 T_ge_sz( GetTimerServerStackSize(), ctx->before_stack_size );
0568 break;
0569 }
0570
0571 case RtemsTimerReqInitiateServer_Post_TaskStack_NA:
0572 break;
0573 }
0574 }
0575
0576 static void RtemsTimerReqInitiateServer_Post_TaskAttr_Check(
0577 RtemsTimerReqInitiateServer_Context *ctx,
0578 RtemsTimerReqInitiateServer_Post_TaskAttr state
0579 )
0580 {
0581 switch ( state ) {
0582 case RtemsTimerReqInitiateServer_Post_TaskAttr_Set: {
0583
0584
0585
0586
0587 T_true( HasTimerServerFloatingPoint() );
0588 break;
0589 }
0590
0591 case RtemsTimerReqInitiateServer_Post_TaskAttr_Nop: {
0592
0593
0594
0595
0596 T_true( HasTimerServerFloatingPoint() == ctx->before_has_floating_point );
0597 break;
0598 }
0599
0600 case RtemsTimerReqInitiateServer_Post_TaskAttr_NA:
0601 break;
0602 }
0603 }
0604
0605 static void RtemsTimerReqInitiateServer_Setup(
0606 RtemsTimerReqInitiateServer_Context *ctx
0607 )
0608 {
0609 ctx->task_objects = NULL;
0610 }
0611
0612 static void RtemsTimerReqInitiateServer_Setup_Wrap( void *arg )
0613 {
0614 RtemsTimerReqInitiateServer_Context *ctx;
0615
0616 ctx = arg;
0617 ctx->Map.in_action_loop = false;
0618 RtemsTimerReqInitiateServer_Setup( ctx );
0619 }
0620
0621
0622
0623
0624 static void RtemsTimerReqInitiateServer_Teardown(
0625 RtemsTimerReqInitiateServer_Context *ctx
0626 )
0627 {
0628 DeleteTimerServer();
0629 }
0630
0631 static void RtemsTimerReqInitiateServer_Teardown_Wrap( void *arg )
0632 {
0633 RtemsTimerReqInitiateServer_Context *ctx;
0634
0635 ctx = arg;
0636 ctx->Map.in_action_loop = false;
0637 RtemsTimerReqInitiateServer_Teardown( ctx );
0638 }
0639
0640 static void RtemsTimerReqInitiateServer_Action(
0641 RtemsTimerReqInitiateServer_Context *ctx
0642 )
0643 {
0644 if ( ExistTimerServer() ) {
0645 ctx->before_priority = GetTimerServerPriority();
0646 ctx->before_stack_size = GetTimerServerStackSize();
0647 ctx->before_has_floating_point = HasTimerServerFloatingPoint();
0648 }
0649
0650 ctx->status = rtems_timer_initiate_server(
0651 ctx->priority,
0652 ctx->stack_size,
0653 RTEMS_FLOATING_POINT
0654 );
0655 }
0656
0657 static void RtemsTimerReqInitiateServer_Cleanup(
0658 RtemsTimerReqInitiateServer_Context *ctx
0659 )
0660 {
0661 T_surrender_objects( &ctx->task_objects, rtems_task_delete );
0662 }
0663
0664 static const RtemsTimerReqInitiateServer_Entry
0665 RtemsTimerReqInitiateServer_Entries[] = {
0666 { 0, 0, 0, 0, 0, RtemsTimerReqInitiateServer_Post_Status_IncStat,
0667 RtemsTimerReqInitiateServer_Post_Started_Yes,
0668 RtemsTimerReqInitiateServer_Post_TaskPrio_Nop,
0669 RtemsTimerReqInitiateServer_Post_TaskStack_Nop,
0670 RtemsTimerReqInitiateServer_Post_TaskAttr_Nop },
0671 { 0, 0, 0, 0, 0, RtemsTimerReqInitiateServer_Post_Status_TooMany,
0672 RtemsTimerReqInitiateServer_Post_Started_No,
0673 RtemsTimerReqInitiateServer_Post_TaskPrio_NA,
0674 RtemsTimerReqInitiateServer_Post_TaskStack_NA,
0675 RtemsTimerReqInitiateServer_Post_TaskAttr_NA },
0676 { 0, 0, 0, 0, 0, RtemsTimerReqInitiateServer_Post_Status_InvPrio,
0677 RtemsTimerReqInitiateServer_Post_Started_No,
0678 RtemsTimerReqInitiateServer_Post_TaskPrio_NA,
0679 RtemsTimerReqInitiateServer_Post_TaskStack_NA,
0680 RtemsTimerReqInitiateServer_Post_TaskAttr_NA },
0681 { 0, 0, 0, 0, 0, RtemsTimerReqInitiateServer_Post_Status_Ok,
0682 RtemsTimerReqInitiateServer_Post_Started_Yes,
0683 RtemsTimerReqInitiateServer_Post_TaskPrio_Set,
0684 RtemsTimerReqInitiateServer_Post_TaskStack_Set,
0685 RtemsTimerReqInitiateServer_Post_TaskAttr_Set },
0686 { 0, 0, 0, 0, 0, RtemsTimerReqInitiateServer_Post_Status_Unsat,
0687 RtemsTimerReqInitiateServer_Post_Started_No,
0688 RtemsTimerReqInitiateServer_Post_TaskPrio_NA,
0689 RtemsTimerReqInitiateServer_Post_TaskStack_NA,
0690 RtemsTimerReqInitiateServer_Post_TaskAttr_NA }
0691 };
0692
0693 static const uint8_t
0694 RtemsTimerReqInitiateServer_Map[] = {
0695 0, 0, 3, 1, 0, 0, 4, 1, 0, 0, 3, 1, 0, 0, 4, 1, 0, 0, 2, 2, 0, 0, 2, 2
0696 };
0697
0698 static size_t RtemsTimerReqInitiateServer_Scope(
0699 void *arg,
0700 char *buf,
0701 size_t n
0702 )
0703 {
0704 RtemsTimerReqInitiateServer_Context *ctx;
0705
0706 ctx = arg;
0707
0708 if ( ctx->Map.in_action_loop ) {
0709 return T_get_scope(
0710 RtemsTimerReqInitiateServer_PreDesc,
0711 buf,
0712 n,
0713 ctx->Map.pcs
0714 );
0715 }
0716
0717 return 0;
0718 }
0719
0720 static T_fixture RtemsTimerReqInitiateServer_Fixture = {
0721 .setup = RtemsTimerReqInitiateServer_Setup_Wrap,
0722 .stop = NULL,
0723 .teardown = RtemsTimerReqInitiateServer_Teardown_Wrap,
0724 .scope = RtemsTimerReqInitiateServer_Scope,
0725 .initial_context = &RtemsTimerReqInitiateServer_Instance
0726 };
0727
0728 static inline RtemsTimerReqInitiateServer_Entry
0729 RtemsTimerReqInitiateServer_PopEntry(
0730 RtemsTimerReqInitiateServer_Context *ctx
0731 )
0732 {
0733 size_t index;
0734
0735 index = ctx->Map.index;
0736 ctx->Map.index = index + 1;
0737 return RtemsTimerReqInitiateServer_Entries[
0738 RtemsTimerReqInitiateServer_Map[ index ]
0739 ];
0740 }
0741
0742 static void RtemsTimerReqInitiateServer_TestVariant(
0743 RtemsTimerReqInitiateServer_Context *ctx
0744 )
0745 {
0746 RtemsTimerReqInitiateServer_Pre_Priority_Prepare( ctx, ctx->Map.pcs[ 0 ] );
0747 RtemsTimerReqInitiateServer_Pre_Stack_Prepare( ctx, ctx->Map.pcs[ 1 ] );
0748 RtemsTimerReqInitiateServer_Pre_Started_Prepare( ctx, ctx->Map.pcs[ 2 ] );
0749 RtemsTimerReqInitiateServer_Pre_TaskObj_Prepare( ctx, ctx->Map.pcs[ 3 ] );
0750 RtemsTimerReqInitiateServer_Action( ctx );
0751 RtemsTimerReqInitiateServer_Post_Status_Check(
0752 ctx,
0753 ctx->Map.entry.Post_Status
0754 );
0755 RtemsTimerReqInitiateServer_Post_Started_Check(
0756 ctx,
0757 ctx->Map.entry.Post_Started
0758 );
0759 RtemsTimerReqInitiateServer_Post_TaskPrio_Check(
0760 ctx,
0761 ctx->Map.entry.Post_TaskPrio
0762 );
0763 RtemsTimerReqInitiateServer_Post_TaskStack_Check(
0764 ctx,
0765 ctx->Map.entry.Post_TaskStack
0766 );
0767 RtemsTimerReqInitiateServer_Post_TaskAttr_Check(
0768 ctx,
0769 ctx->Map.entry.Post_TaskAttr
0770 );
0771 }
0772
0773
0774
0775
0776 T_TEST_CASE_FIXTURE(
0777 RtemsTimerReqInitiateServer,
0778 &RtemsTimerReqInitiateServer_Fixture
0779 )
0780 {
0781 RtemsTimerReqInitiateServer_Context *ctx;
0782
0783 ctx = T_fixture_context();
0784 ctx->Map.in_action_loop = true;
0785 ctx->Map.index = 0;
0786
0787 for (
0788 ctx->Map.pcs[ 0 ] = RtemsTimerReqInitiateServer_Pre_Priority_Valid;
0789 ctx->Map.pcs[ 0 ] < RtemsTimerReqInitiateServer_Pre_Priority_NA;
0790 ++ctx->Map.pcs[ 0 ]
0791 ) {
0792 for (
0793 ctx->Map.pcs[ 1 ] = RtemsTimerReqInitiateServer_Pre_Stack_Allocatable;
0794 ctx->Map.pcs[ 1 ] < RtemsTimerReqInitiateServer_Pre_Stack_NA;
0795 ++ctx->Map.pcs[ 1 ]
0796 ) {
0797 for (
0798 ctx->Map.pcs[ 2 ] = RtemsTimerReqInitiateServer_Pre_Started_Yes;
0799 ctx->Map.pcs[ 2 ] < RtemsTimerReqInitiateServer_Pre_Started_NA;
0800 ++ctx->Map.pcs[ 2 ]
0801 ) {
0802 for (
0803 ctx->Map.pcs[ 3 ] = RtemsTimerReqInitiateServer_Pre_TaskObj_Available;
0804 ctx->Map.pcs[ 3 ] < RtemsTimerReqInitiateServer_Pre_TaskObj_NA;
0805 ++ctx->Map.pcs[ 3 ]
0806 ) {
0807 ctx->Map.entry = RtemsTimerReqInitiateServer_PopEntry( ctx );
0808 RtemsTimerReqInitiateServer_TestVariant( ctx );
0809 RtemsTimerReqInitiateServer_Cleanup( ctx );
0810 }
0811 }
0812 }
0813 }
0814 }
0815
0816