Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:52

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /**
0004  * @file
0005  *
0006  * @ingroup RtemsTaskReqGetPriority
0007  */
0008 
0009 /*
0010  * Copyright (C) 2021 embedded brains GmbH & Co. KG
0011  *
0012  * Redistribution and use in source and binary forms, with or without
0013  * modification, are permitted provided that the following conditions
0014  * are met:
0015  * 1. Redistributions of source code must retain the above copyright
0016  *    notice, this list of conditions and the following disclaimer.
0017  * 2. Redistributions in binary form must reproduce the above copyright
0018  *    notice, this list of conditions and the following disclaimer in the
0019  *    documentation and/or other materials provided with the distribution.
0020  *
0021  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0022  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0023  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0024  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0025  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0026  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0027  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0028  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0029  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0030  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0031  * POSSIBILITY OF SUCH DAMAGE.
0032  */
0033 
0034 /*
0035  * This file is part of the RTEMS quality process and was automatically
0036  * generated.  If you find something that needs to be fixed or
0037  * worded better please post a report or patch to an RTEMS mailing list
0038  * or raise a bug report:
0039  *
0040  * https://www.rtems.org/bugs.html
0041  *
0042  * For information on updating and regenerating please refer to the How-To
0043  * section in the Software Requirements Engineering chapter of the
0044  * RTEMS Software Engineering manual.  The manual is provided as a part of
0045  * a release.  For development sources please refer to the online
0046  * documentation at:
0047  *
0048  * https://docs.rtems.org
0049  */
0050 
0051 #ifdef HAVE_CONFIG_H
0052 #include "config.h"
0053 #endif
0054 
0055 #include <rtems.h>
0056 
0057 #include "ts-config.h"
0058 #include "tx-support.h"
0059 
0060 #include <rtems/test.h>
0061 
0062 /**
0063  * @defgroup RtemsTaskReqGetPriority spec:/rtems/task/req/get-priority
0064  *
0065  * @ingroup TestsuitesValidationNoClock0
0066  *
0067  * @{
0068  */
0069 
0070 typedef enum {
0071   RtemsTaskReqGetPriority_Pre_TaskId_Invalid,
0072   RtemsTaskReqGetPriority_Pre_TaskId_Task,
0073   RtemsTaskReqGetPriority_Pre_TaskId_NA
0074 } RtemsTaskReqGetPriority_Pre_TaskId;
0075 
0076 typedef enum {
0077   RtemsTaskReqGetPriority_Pre_SchedulerId_Invalid,
0078   RtemsTaskReqGetPriority_Pre_SchedulerId_Scheduler,
0079   RtemsTaskReqGetPriority_Pre_SchedulerId_NA
0080 } RtemsTaskReqGetPriority_Pre_SchedulerId;
0081 
0082 typedef enum {
0083   RtemsTaskReqGetPriority_Pre_Scheduler_Eligible,
0084   RtemsTaskReqGetPriority_Pre_Scheduler_Ineligible,
0085   RtemsTaskReqGetPriority_Pre_Scheduler_NA
0086 } RtemsTaskReqGetPriority_Pre_Scheduler;
0087 
0088 typedef enum {
0089   RtemsTaskReqGetPriority_Pre_Priority_Valid,
0090   RtemsTaskReqGetPriority_Pre_Priority_Null,
0091   RtemsTaskReqGetPriority_Pre_Priority_NA
0092 } RtemsTaskReqGetPriority_Pre_Priority;
0093 
0094 typedef enum {
0095   RtemsTaskReqGetPriority_Post_Status_Ok,
0096   RtemsTaskReqGetPriority_Post_Status_InvAddr,
0097   RtemsTaskReqGetPriority_Post_Status_InvId,
0098   RtemsTaskReqGetPriority_Post_Status_NotDef,
0099   RtemsTaskReqGetPriority_Post_Status_NA
0100 } RtemsTaskReqGetPriority_Post_Status;
0101 
0102 typedef enum {
0103   RtemsTaskReqGetPriority_Post_PriorityObj_Set,
0104   RtemsTaskReqGetPriority_Post_PriorityObj_Nop,
0105   RtemsTaskReqGetPriority_Post_PriorityObj_NA
0106 } RtemsTaskReqGetPriority_Post_PriorityObj;
0107 
0108 typedef struct {
0109   uint16_t Skip : 1;
0110   uint16_t Pre_TaskId_NA : 1;
0111   uint16_t Pre_SchedulerId_NA : 1;
0112   uint16_t Pre_Scheduler_NA : 1;
0113   uint16_t Pre_Priority_NA : 1;
0114   uint16_t Post_Status : 3;
0115   uint16_t Post_PriorityObj : 2;
0116 } RtemsTaskReqGetPriority_Entry;
0117 
0118 /**
0119  * @brief Test context for spec:/rtems/task/req/get-priority test case.
0120  */
0121 typedef struct {
0122   /**
0123    * @brief This member contains the scheduler A identifier.
0124    */
0125   rtems_id scheduler_a_id;
0126 
0127   /**
0128    * @brief This member contains the scheduler B identifier.
0129    */
0130   rtems_id scheduler_b_id;
0131 
0132   /**
0133    * @brief This member provides the object referenced by the ``priority``
0134    *   parameter.
0135    */
0136   rtems_task_priority priority_obj;
0137 
0138   /**
0139    * @brief This member contains the return value of the
0140    *   rtems_task_get_priority() call.
0141    */
0142   rtems_status_code status;
0143 
0144   /**
0145    * @brief This member specifies if the ``task_id`` parameter value.
0146    */
0147   rtems_id task_id;
0148 
0149   /**
0150    * @brief This member specifies if the ``scheduler_id`` parameter value.
0151    */
0152   rtems_id scheduler_id;
0153 
0154   /**
0155    * @brief This member specifies if the ``priority`` parameter value.
0156    */
0157   rtems_id *priority;
0158 
0159   struct {
0160     /**
0161      * @brief This member defines the pre-condition indices for the next
0162      *   action.
0163      */
0164     size_t pci[ 4 ];
0165 
0166     /**
0167      * @brief This member defines the pre-condition states for the next action.
0168      */
0169     size_t pcs[ 4 ];
0170 
0171     /**
0172      * @brief If this member is true, then the test action loop is executed.
0173      */
0174     bool in_action_loop;
0175 
0176     /**
0177      * @brief This member contains the next transition map index.
0178      */
0179     size_t index;
0180 
0181     /**
0182      * @brief This member contains the current transition map entry.
0183      */
0184     RtemsTaskReqGetPriority_Entry entry;
0185 
0186     /**
0187      * @brief If this member is true, then the current transition variant
0188      *   should be skipped.
0189      */
0190     bool skip;
0191   } Map;
0192 } RtemsTaskReqGetPriority_Context;
0193 
0194 static RtemsTaskReqGetPriority_Context
0195   RtemsTaskReqGetPriority_Instance;
0196 
0197 static const char * const RtemsTaskReqGetPriority_PreDesc_TaskId[] = {
0198   "Invalid",
0199   "Task",
0200   "NA"
0201 };
0202 
0203 static const char * const RtemsTaskReqGetPriority_PreDesc_SchedulerId[] = {
0204   "Invalid",
0205   "Scheduler",
0206   "NA"
0207 };
0208 
0209 static const char * const RtemsTaskReqGetPriority_PreDesc_Scheduler[] = {
0210   "Eligible",
0211   "Ineligible",
0212   "NA"
0213 };
0214 
0215 static const char * const RtemsTaskReqGetPriority_PreDesc_Priority[] = {
0216   "Valid",
0217   "Null",
0218   "NA"
0219 };
0220 
0221 static const char * const * const RtemsTaskReqGetPriority_PreDesc[] = {
0222   RtemsTaskReqGetPriority_PreDesc_TaskId,
0223   RtemsTaskReqGetPriority_PreDesc_SchedulerId,
0224   RtemsTaskReqGetPriority_PreDesc_Scheduler,
0225   RtemsTaskReqGetPriority_PreDesc_Priority,
0226   NULL
0227 };
0228 
0229 static void RtemsTaskReqGetPriority_Pre_TaskId_Prepare(
0230   RtemsTaskReqGetPriority_Context   *ctx,
0231   RtemsTaskReqGetPriority_Pre_TaskId state
0232 )
0233 {
0234   switch ( state ) {
0235     case RtemsTaskReqGetPriority_Pre_TaskId_Invalid: {
0236       /*
0237        * While the ``task_id`` parameter is not associated with a task.
0238        */
0239       ctx->task_id = INVALID_ID;
0240       break;
0241     }
0242 
0243     case RtemsTaskReqGetPriority_Pre_TaskId_Task: {
0244       /*
0245        * While the ``task_id`` parameter is associated with a task.
0246        */
0247       ctx->task_id = RTEMS_SELF;
0248       break;
0249     }
0250 
0251     case RtemsTaskReqGetPriority_Pre_TaskId_NA:
0252       break;
0253   }
0254 }
0255 
0256 static void RtemsTaskReqGetPriority_Pre_SchedulerId_Prepare(
0257   RtemsTaskReqGetPriority_Context        *ctx,
0258   RtemsTaskReqGetPriority_Pre_SchedulerId state
0259 )
0260 {
0261   switch ( state ) {
0262     case RtemsTaskReqGetPriority_Pre_SchedulerId_Invalid: {
0263       /*
0264        * While the ``scheduler_id`` parameter is not associated with a
0265        * scheduler.
0266        */
0267       ctx->scheduler_id = INVALID_ID;
0268       break;
0269     }
0270 
0271     case RtemsTaskReqGetPriority_Pre_SchedulerId_Scheduler: {
0272       /*
0273        * While the ``scheduler_id`` parameter is associated with a scheduler.
0274        */
0275       ctx->scheduler_id = ctx->scheduler_a_id;
0276       break;
0277     }
0278 
0279     case RtemsTaskReqGetPriority_Pre_SchedulerId_NA:
0280       break;
0281   }
0282 }
0283 
0284 static void RtemsTaskReqGetPriority_Pre_Scheduler_Prepare(
0285   RtemsTaskReqGetPriority_Context      *ctx,
0286   RtemsTaskReqGetPriority_Pre_Scheduler state
0287 )
0288 {
0289   switch ( state ) {
0290     case RtemsTaskReqGetPriority_Pre_Scheduler_Eligible: {
0291       /*
0292        * While the ``scheduler_id`` parameter is associated with an eligible
0293        * scheduler of the task specified by ``task_id``.
0294        */
0295       ctx->scheduler_id = ctx->scheduler_a_id;
0296       break;
0297     }
0298 
0299     case RtemsTaskReqGetPriority_Pre_Scheduler_Ineligible: {
0300       /*
0301        * While the ``scheduler_id`` parameter is associated with an ineligible
0302        * scheduler of the task specified by ``task_id``.
0303        */
0304       ctx->scheduler_id = ctx->scheduler_b_id;
0305       break;
0306     }
0307 
0308     case RtemsTaskReqGetPriority_Pre_Scheduler_NA:
0309       break;
0310   }
0311 }
0312 
0313 static void RtemsTaskReqGetPriority_Pre_Priority_Prepare(
0314   RtemsTaskReqGetPriority_Context     *ctx,
0315   RtemsTaskReqGetPriority_Pre_Priority state
0316 )
0317 {
0318   switch ( state ) {
0319     case RtemsTaskReqGetPriority_Pre_Priority_Valid: {
0320       /*
0321        * While the ``priority`` parameter references an object of type
0322        * rtems_task_priority.
0323        */
0324       ctx->priority = &ctx->priority_obj;
0325       break;
0326     }
0327 
0328     case RtemsTaskReqGetPriority_Pre_Priority_Null: {
0329       /*
0330        * While the ``priority`` parameter is equal to NULL.
0331        */
0332       ctx->priority = NULL;
0333       break;
0334     }
0335 
0336     case RtemsTaskReqGetPriority_Pre_Priority_NA:
0337       break;
0338   }
0339 }
0340 
0341 static void RtemsTaskReqGetPriority_Post_Status_Check(
0342   RtemsTaskReqGetPriority_Context    *ctx,
0343   RtemsTaskReqGetPriority_Post_Status state
0344 )
0345 {
0346   switch ( state ) {
0347     case RtemsTaskReqGetPriority_Post_Status_Ok: {
0348       /*
0349        * The return status of rtems_task_get_priority() shall be
0350        * RTEMS_SUCCESSFUL.
0351        */
0352       T_rsc_success( ctx->status );
0353       break;
0354     }
0355 
0356     case RtemsTaskReqGetPriority_Post_Status_InvAddr: {
0357       /*
0358        * The return status of rtems_task_get_priority() shall be
0359        * RTEMS_INVALID_ADDRESS.
0360        */
0361       T_rsc( ctx->status, RTEMS_INVALID_ADDRESS );
0362       break;
0363     }
0364 
0365     case RtemsTaskReqGetPriority_Post_Status_InvId: {
0366       /*
0367        * The return status of rtems_task_get_priority() shall be
0368        * RTEMS_INVALID_ID.
0369        */
0370       T_rsc( ctx->status, RTEMS_INVALID_ID );
0371       break;
0372     }
0373 
0374     case RtemsTaskReqGetPriority_Post_Status_NotDef: {
0375       /*
0376        * The return status of rtems_task_get_priority() shall be
0377        * RTEMS_NOT_DEFINED.
0378        */
0379       T_rsc( ctx->status, RTEMS_NOT_DEFINED );
0380       break;
0381     }
0382 
0383     case RtemsTaskReqGetPriority_Post_Status_NA:
0384       break;
0385   }
0386 }
0387 
0388 static void RtemsTaskReqGetPriority_Post_PriorityObj_Check(
0389   RtemsTaskReqGetPriority_Context         *ctx,
0390   RtemsTaskReqGetPriority_Post_PriorityObj state
0391 )
0392 {
0393   switch ( state ) {
0394     case RtemsTaskReqGetPriority_Post_PriorityObj_Set: {
0395       /*
0396        * The value of the object referenced by the ``scheduler_id`` parameter
0397        * shall be set to the object identifier of the home scheduler of the
0398        * task specified by the ``task_id`` parameter at some point during the
0399        * call after the return of the rtems_task_get_priority() call.
0400        */
0401       T_eq_u32( ctx->priority_obj, PRIO_DEFAULT );
0402       break;
0403     }
0404 
0405     case RtemsTaskReqGetPriority_Post_PriorityObj_Nop: {
0406       /*
0407        * Objects referenced by the ``scheduler_id`` parameter in past calls to
0408        * rtems_task_get_priority() shall not be accessed by the
0409        * rtems_task_get_priority() call.
0410        */
0411       T_eq_u32( ctx->priority_obj, PRIO_INVALID );
0412       break;
0413     }
0414 
0415     case RtemsTaskReqGetPriority_Post_PriorityObj_NA:
0416       break;
0417   }
0418 }
0419 
0420 static void RtemsTaskReqGetPriority_Setup(
0421   RtemsTaskReqGetPriority_Context *ctx
0422 )
0423 {
0424   rtems_status_code sc;
0425 
0426   sc = rtems_scheduler_ident(
0427     TEST_SCHEDULER_A_NAME,
0428     &ctx->scheduler_a_id
0429   );
0430   T_rsc_success( sc );
0431 
0432   #if defined(RTEMS_SMP)
0433   sc = rtems_scheduler_ident(
0434     TEST_SCHEDULER_B_NAME,
0435     &ctx->scheduler_b_id
0436   );
0437   T_rsc_success( sc );
0438   #endif
0439 }
0440 
0441 static void RtemsTaskReqGetPriority_Setup_Wrap( void *arg )
0442 {
0443   RtemsTaskReqGetPriority_Context *ctx;
0444 
0445   ctx = arg;
0446   ctx->Map.in_action_loop = false;
0447   RtemsTaskReqGetPriority_Setup( ctx );
0448 }
0449 
0450 static void RtemsTaskReqGetPriority_Prepare(
0451   RtemsTaskReqGetPriority_Context *ctx
0452 )
0453 {
0454   ctx->priority_obj = PRIO_INVALID;
0455 }
0456 
0457 static void RtemsTaskReqGetPriority_Action(
0458   RtemsTaskReqGetPriority_Context *ctx
0459 )
0460 {
0461   ctx->status = rtems_task_get_priority(
0462     ctx->task_id,
0463     ctx->scheduler_id,
0464     ctx->priority
0465   );
0466 }
0467 
0468 static const RtemsTaskReqGetPriority_Entry
0469 RtemsTaskReqGetPriority_Entries[] = {
0470   { 0, 0, 0, 1, 0, RtemsTaskReqGetPriority_Post_Status_InvId,
0471     RtemsTaskReqGetPriority_Post_PriorityObj_Nop },
0472   { 0, 0, 0, 1, 0, RtemsTaskReqGetPriority_Post_Status_InvAddr,
0473     RtemsTaskReqGetPriority_Post_PriorityObj_Nop },
0474   { 0, 0, 0, 0, 0, RtemsTaskReqGetPriority_Post_Status_Ok,
0475     RtemsTaskReqGetPriority_Post_PriorityObj_Set },
0476   { 0, 0, 0, 0, 0, RtemsTaskReqGetPriority_Post_Status_InvAddr,
0477     RtemsTaskReqGetPriority_Post_PriorityObj_Nop },
0478 #if defined(RTEMS_SMP)
0479   { 0, 0, 0, 0, 0, RtemsTaskReqGetPriority_Post_Status_NotDef,
0480     RtemsTaskReqGetPriority_Post_PriorityObj_Nop },
0481 #else
0482   { 1, 0, 0, 0, 0, RtemsTaskReqGetPriority_Post_Status_NA,
0483     RtemsTaskReqGetPriority_Post_PriorityObj_NA },
0484 #endif
0485 #if defined(RTEMS_SMP)
0486   { 0, 0, 0, 0, 0, RtemsTaskReqGetPriority_Post_Status_InvAddr,
0487     RtemsTaskReqGetPriority_Post_PriorityObj_Nop }
0488 #else
0489   { 1, 0, 0, 0, 0, RtemsTaskReqGetPriority_Post_Status_NA,
0490     RtemsTaskReqGetPriority_Post_PriorityObj_NA }
0491 #endif
0492 };
0493 
0494 static const uint8_t
0495 RtemsTaskReqGetPriority_Map[] = {
0496   0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 4, 5
0497 };
0498 
0499 static size_t RtemsTaskReqGetPriority_Scope( void *arg, char *buf, size_t n )
0500 {
0501   RtemsTaskReqGetPriority_Context *ctx;
0502 
0503   ctx = arg;
0504 
0505   if ( ctx->Map.in_action_loop ) {
0506     return T_get_scope(
0507       RtemsTaskReqGetPriority_PreDesc,
0508       buf,
0509       n,
0510       ctx->Map.pcs
0511     );
0512   }
0513 
0514   return 0;
0515 }
0516 
0517 static T_fixture RtemsTaskReqGetPriority_Fixture = {
0518   .setup = RtemsTaskReqGetPriority_Setup_Wrap,
0519   .stop = NULL,
0520   .teardown = NULL,
0521   .scope = RtemsTaskReqGetPriority_Scope,
0522   .initial_context = &RtemsTaskReqGetPriority_Instance
0523 };
0524 
0525 static inline RtemsTaskReqGetPriority_Entry RtemsTaskReqGetPriority_PopEntry(
0526   RtemsTaskReqGetPriority_Context *ctx
0527 )
0528 {
0529   size_t index;
0530 
0531   index = ctx->Map.index;
0532   ctx->Map.index = index + 1;
0533   return RtemsTaskReqGetPriority_Entries[
0534     RtemsTaskReqGetPriority_Map[ index ]
0535   ];
0536 }
0537 
0538 static void RtemsTaskReqGetPriority_SetPreConditionStates(
0539   RtemsTaskReqGetPriority_Context *ctx
0540 )
0541 {
0542   ctx->Map.pcs[ 0 ] = ctx->Map.pci[ 0 ];
0543   ctx->Map.pcs[ 1 ] = ctx->Map.pci[ 1 ];
0544 
0545   if ( ctx->Map.entry.Pre_Scheduler_NA ) {
0546     ctx->Map.pcs[ 2 ] = RtemsTaskReqGetPriority_Pre_Scheduler_NA;
0547   } else {
0548     ctx->Map.pcs[ 2 ] = ctx->Map.pci[ 2 ];
0549   }
0550 
0551   ctx->Map.pcs[ 3 ] = ctx->Map.pci[ 3 ];
0552 }
0553 
0554 static void RtemsTaskReqGetPriority_TestVariant(
0555   RtemsTaskReqGetPriority_Context *ctx
0556 )
0557 {
0558   RtemsTaskReqGetPriority_Pre_TaskId_Prepare( ctx, ctx->Map.pcs[ 0 ] );
0559   RtemsTaskReqGetPriority_Pre_SchedulerId_Prepare( ctx, ctx->Map.pcs[ 1 ] );
0560   RtemsTaskReqGetPriority_Pre_Scheduler_Prepare( ctx, ctx->Map.pcs[ 2 ] );
0561   RtemsTaskReqGetPriority_Pre_Priority_Prepare( ctx, ctx->Map.pcs[ 3 ] );
0562   RtemsTaskReqGetPriority_Action( ctx );
0563   RtemsTaskReqGetPriority_Post_Status_Check( ctx, ctx->Map.entry.Post_Status );
0564   RtemsTaskReqGetPriority_Post_PriorityObj_Check(
0565     ctx,
0566     ctx->Map.entry.Post_PriorityObj
0567   );
0568 }
0569 
0570 /**
0571  * @fn void T_case_body_RtemsTaskReqGetPriority( void )
0572  */
0573 T_TEST_CASE_FIXTURE(
0574   RtemsTaskReqGetPriority,
0575   &RtemsTaskReqGetPriority_Fixture
0576 )
0577 {
0578   RtemsTaskReqGetPriority_Context *ctx;
0579 
0580   ctx = T_fixture_context();
0581   ctx->Map.in_action_loop = true;
0582   ctx->Map.index = 0;
0583 
0584   for (
0585     ctx->Map.pci[ 0 ] = RtemsTaskReqGetPriority_Pre_TaskId_Invalid;
0586     ctx->Map.pci[ 0 ] < RtemsTaskReqGetPriority_Pre_TaskId_NA;
0587     ++ctx->Map.pci[ 0 ]
0588   ) {
0589     for (
0590       ctx->Map.pci[ 1 ] = RtemsTaskReqGetPriority_Pre_SchedulerId_Invalid;
0591       ctx->Map.pci[ 1 ] < RtemsTaskReqGetPriority_Pre_SchedulerId_NA;
0592       ++ctx->Map.pci[ 1 ]
0593     ) {
0594       for (
0595         ctx->Map.pci[ 2 ] = RtemsTaskReqGetPriority_Pre_Scheduler_Eligible;
0596         ctx->Map.pci[ 2 ] < RtemsTaskReqGetPriority_Pre_Scheduler_NA;
0597         ++ctx->Map.pci[ 2 ]
0598       ) {
0599         for (
0600           ctx->Map.pci[ 3 ] = RtemsTaskReqGetPriority_Pre_Priority_Valid;
0601           ctx->Map.pci[ 3 ] < RtemsTaskReqGetPriority_Pre_Priority_NA;
0602           ++ctx->Map.pci[ 3 ]
0603         ) {
0604           ctx->Map.entry = RtemsTaskReqGetPriority_PopEntry( ctx );
0605 
0606           if ( ctx->Map.entry.Skip ) {
0607             continue;
0608           }
0609 
0610           RtemsTaskReqGetPriority_SetPreConditionStates( ctx );
0611           RtemsTaskReqGetPriority_Prepare( ctx );
0612           RtemsTaskReqGetPriority_TestVariant( ctx );
0613         }
0614       }
0615     }
0616   }
0617 }
0618 
0619 /** @} */