Back to home page

LXR

 
 

    


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

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /**
0004  * @file
0005  *
0006  * @ingroup ScoreTqReqTimeoutPriorityInherit
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/score/smpimpl.h>
0056 #include <rtems/score/threadimpl.h>
0057 
0058 #include "tr-tq-timeout-priority-inherit.h"
0059 #include "tx-support.h"
0060 
0061 #include <rtems/test.h>
0062 
0063 /**
0064  * @defgroup ScoreTqReqTimeoutPriorityInherit \
0065  *   spec:/score/tq/req/timeout-priority-inherit
0066  *
0067  * @ingroup TestsuitesValidationNoClock0
0068  *
0069  * @{
0070  */
0071 
0072 typedef struct {
0073   uint32_t Skip : 1;
0074   uint32_t Pre_HomeScheduler_NA : 1;
0075   uint32_t Pre_EligibleScheduler_NA : 1;
0076   uint32_t Pre_Queue_NA : 1;
0077   uint32_t Pre_OwnerPriority_NA : 1;
0078   uint32_t Pre_OwnerState_NA : 1;
0079   uint32_t Pre_OwnerQueue_NA : 1;
0080   uint32_t Pre_OwnerOwnerPriority_NA : 1;
0081   uint32_t Pre_WaitState_NA : 1;
0082   uint32_t Post_Status : 2;
0083   uint32_t Post_Unblock : 2;
0084   uint32_t Post_OwnerPriority : 2;
0085   uint32_t Post_OwnerOwnerPriority : 2;
0086 } ScoreTqReqTimeoutPriorityInherit_Entry;
0087 
0088 /**
0089  * @brief Test context for spec:/score/tq/req/timeout-priority-inherit test
0090  *   case.
0091  */
0092 typedef struct {
0093   /**
0094    * @brief This member contains the call within ISR request.
0095    */
0096   CallWithinISRRequest request;
0097 
0098   /**
0099    * @brief This member specifies the scheduler of the thread.
0100    */
0101   rtems_id scheduler_id;
0102 
0103   /**
0104    * @brief If this member is true, then the thread shall have at least two
0105    *   eligible scheduler.
0106    */
0107   bool other_scheduler;
0108 
0109   /**
0110    * @brief This member specifies the queue node kind.
0111    */
0112   TQNodeKind queue_node;
0113 
0114   /**
0115    * @brief This member specifies the owner priority node kind.
0116    */
0117   TQNodeKind owner_node;
0118 
0119   /**
0120    * @brief This member specifies which mutex obtain event shall be used to
0121    *   block the thread queue owner.
0122    */
0123   rtems_event_set owner_obtain;
0124 
0125   /**
0126    * @brief This member specifies which mutex release event shall be used to
0127    *   unblock the thread queue owner.
0128    */
0129   rtems_event_set owner_release;
0130 
0131   /**
0132    * @brief This member specifies the owner queue node kind.
0133    */
0134   TQNodeKind owner_queue_node;
0135 
0136   /**
0137    * @brief This member specifies the kind of the priority node of the owner of
0138    *   the thread queue on which the owner of the thread queue is blocked.
0139    */
0140   TQNodeKind owner_owner_node;
0141 
0142   /**
0143    * @brief This member specifies the wait state.
0144    */
0145   TQWaitState wait_state;
0146 
0147   /**
0148    * @brief This member contains the thread queue priority.
0149    */
0150   rtems_task_priority queue_priority;
0151 
0152   /**
0153    * @brief This member contains the owner priority.
0154    */
0155   rtems_task_priority owner_priority;
0156 
0157   /**
0158    * @brief This member contains the owner priority after the timeout or
0159    *   surrender.
0160    */
0161   rtems_task_priority owner_priority_after;
0162 
0163   /**
0164    * @brief This member contains the priority of the thread queue on which the
0165    *   owner is enqueued.
0166    */
0167   rtems_task_priority owner_queue_priority;
0168 
0169   /**
0170    * @brief This member contains the priority of the owner of the thread queue
0171    *   on which the owner is enqueued.
0172    */
0173   rtems_task_priority owner_owner_priority;
0174 
0175   /**
0176    * @brief This member contains the priority after the timeout or surrender of
0177    *   the owner of the thread queue on which the owner is enqueued.
0178    */
0179   rtems_task_priority owner_owner_priority_after;
0180 
0181   /**
0182    * @brief If this member is true, then the queue helper shall surrender the
0183    *   thread queue.
0184    */
0185   bool queue_helper_surrender;
0186 
0187   /**
0188    * @brief If this member is true, then the owner helper shall release mutex
0189    *   A.
0190    */
0191   bool owner_helper_release;
0192 
0193   /**
0194    * @brief If this member is true, then the owner queue helper shall release
0195    *   the mutex on which the owner is blocked.
0196    */
0197   bool owner_queue_helper_release;
0198 
0199   /**
0200    * @brief If this member is true, then helper of the owner of the mutex which
0201    *   the owner blocked shall release mutex B.
0202    */
0203   bool owner_owner_helper_release;
0204 
0205   /**
0206    * @brief This member contains a copy of the corresponding
0207    *   ScoreTqReqTimeoutPriorityInherit_Run() parameter.
0208    */
0209   TQContext *tq_ctx;
0210 
0211   struct {
0212     /**
0213      * @brief This member defines the pre-condition indices for the next
0214      *   action.
0215      */
0216     size_t pci[ 8 ];
0217 
0218     /**
0219      * @brief This member defines the pre-condition states for the next action.
0220      */
0221     size_t pcs[ 8 ];
0222 
0223     /**
0224      * @brief If this member is true, then the test action loop is executed.
0225      */
0226     bool in_action_loop;
0227 
0228     /**
0229      * @brief This member contains the next transition map index.
0230      */
0231     size_t index;
0232 
0233     /**
0234      * @brief This member contains the current transition map entry.
0235      */
0236     ScoreTqReqTimeoutPriorityInherit_Entry entry;
0237 
0238     /**
0239      * @brief If this member is true, then the current transition variant
0240      *   should be skipped.
0241      */
0242     bool skip;
0243   } Map;
0244 } ScoreTqReqTimeoutPriorityInherit_Context;
0245 
0246 static ScoreTqReqTimeoutPriorityInherit_Context
0247   ScoreTqReqTimeoutPriorityInherit_Instance;
0248 
0249 static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_HomeScheduler[] = {
0250   "Home",
0251   "Helping",
0252   "NA"
0253 };
0254 
0255 static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_EligibleScheduler[] = {
0256   "One",
0257   "More",
0258   "NA"
0259 };
0260 
0261 static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_Queue[] = {
0262   "Only",
0263   "Vital",
0264   "Dispensable",
0265   "NA"
0266 };
0267 
0268 static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerPriority[] = {
0269   "Only",
0270   "Vital",
0271   "Dispensable",
0272   "NA"
0273 };
0274 
0275 static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerState[] = {
0276   "NotEnqueued",
0277   "FIFO",
0278   "Priority",
0279   "PriorityInherit",
0280   "NA"
0281 };
0282 
0283 static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerQueue[] = {
0284   "Only",
0285   "Vital",
0286   "Dispensable",
0287   "NA"
0288 };
0289 
0290 static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerOwnerPriority[] = {
0291   "Only",
0292   "Vital",
0293   "Dispensable",
0294   "NA"
0295 };
0296 
0297 static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_WaitState[] = {
0298   "Blocked",
0299   "IntendToBlock",
0300   "ReadyAgain",
0301   "NA"
0302 };
0303 
0304 static const char * const * const ScoreTqReqTimeoutPriorityInherit_PreDesc[] = {
0305   ScoreTqReqTimeoutPriorityInherit_PreDesc_HomeScheduler,
0306   ScoreTqReqTimeoutPriorityInherit_PreDesc_EligibleScheduler,
0307   ScoreTqReqTimeoutPriorityInherit_PreDesc_Queue,
0308   ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerPriority,
0309   ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerState,
0310   ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerQueue,
0311   ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerOwnerPriority,
0312   ScoreTqReqTimeoutPriorityInherit_PreDesc_WaitState,
0313   NULL
0314 };
0315 
0316 typedef ScoreTqReqTimeoutPriorityInherit_Context Context;
0317 
0318 #define THREAD TQ_BLOCKER_A
0319 
0320 #define THREAD_HELPER_A TQ_HELPER_B
0321 
0322 #define THREAD_HELPER_B TQ_HELPER_C
0323 
0324 #define QUEUE_HELPER TQ_BLOCKER_B
0325 
0326 #define OWNER TQ_BLOCKER_C
0327 
0328 #define OWNER_HELPER TQ_BLOCKER_D
0329 
0330 #define OWNER_QUEUE_HELPER TQ_BLOCKER_E
0331 
0332 #define OWNER_OWNER TQ_WORKER_F
0333 
0334 #define OWNER_OWNER_HELPER TQ_HELPER_A
0335 
0336 static bool GetUnblock( const Context *ctx, size_t *index )
0337 {
0338   while ( true ) {
0339     const T_scheduler_event *event;
0340 
0341     event = TQGetNextUnblock( ctx->tq_ctx, index );
0342 
0343     if ( event == &T_scheduler_event_null ) {
0344       return false;
0345     }
0346 
0347     if ( event->thread == ctx->tq_ctx->worker_tcb[ THREAD ] ) {
0348       return true;
0349     }
0350   }
0351 }
0352 
0353 static void Tick( void *arg )
0354 {
0355   Context *ctx;
0356 
0357   ctx = arg;
0358   TQSchedulerRecordStart( ctx->tq_ctx );
0359   FinalClockTick();
0360   TQSchedulerRecordStop( ctx->tq_ctx );
0361 }
0362 
0363 static void SchedulerBlock(
0364   void                    *arg,
0365   const T_scheduler_event *event,
0366   T_scheduler_when         when
0367 )
0368 {
0369   Context *ctx;
0370 
0371   ctx = arg;
0372 
0373   if (
0374     when == T_SCHEDULER_BEFORE &&
0375     event->operation == T_SCHEDULER_BLOCK &&
0376     event->thread == ctx->tq_ctx->worker_tcb[ THREAD ]
0377   ) {
0378     T_scheduler_set_event_handler( NULL, NULL );
0379     ctx->request.handler = Tick;
0380     CallWithinISRSubmit( &ctx->request );
0381   }
0382 }
0383 
0384 static void ThreadTimeout( void *arg )
0385 {
0386   Context *ctx;
0387 
0388   ctx = arg;
0389   TQSchedulerRecordStart( ctx->tq_ctx );
0390   _Thread_Timeout(
0391     &ctx->tq_ctx->worker_tcb[ THREAD ]->Timer.Watchdog
0392   );
0393   TQSchedulerRecordStop( ctx->tq_ctx );
0394 }
0395 
0396 static void SchedulerUnblock(
0397   void                    *arg,
0398   const T_scheduler_event *event,
0399   T_scheduler_when         when
0400 )
0401 {
0402   Context *ctx;
0403 
0404   ctx = arg;
0405 
0406   if (
0407     when == T_SCHEDULER_BEFORE &&
0408     event->operation == T_SCHEDULER_UNBLOCK &&
0409     event->thread == ctx->tq_ctx->worker_tcb[ THREAD ]
0410   ) {
0411     T_scheduler_set_event_handler( NULL, NULL );
0412 
0413     if ( ctx->scheduler_id == SCHEDULER_B_ID ) {
0414 #if defined(RTEMS_SMP)
0415       _SMP_Unicast_action( 1, ThreadTimeout, ctx );
0416 #else
0417       T_unreachable();
0418 #endif
0419     } else {
0420       ctx->request.handler = ThreadTimeout;
0421       CallWithinISRSubmit( &ctx->request );
0422     }
0423   }
0424 }
0425 
0426 static void GetPriorities( Context *ctx )
0427 {
0428   ctx->owner_priority_after = GetPriorityByScheduler(
0429     ctx->tq_ctx->worker_id[ OWNER ],
0430     ctx->scheduler_id
0431   );
0432   ctx->owner_owner_priority_after = GetPriorityByScheduler(
0433     ctx->tq_ctx->worker_id[ OWNER_OWNER ],
0434     ctx->scheduler_id
0435   );
0436 }
0437 
0438 static void PrepareThread( const Context *ctx )
0439 {
0440   if ( ctx->other_scheduler ) {
0441     rtems_id other_scheduler_id;
0442 
0443     if ( ctx->scheduler_id == SCHEDULER_A_ID ) {
0444       other_scheduler_id = SCHEDULER_B_ID;
0445     } else {
0446       other_scheduler_id = SCHEDULER_B_ID;
0447     }
0448 
0449     TQSendAndWaitForExecutionStop(
0450       ctx->tq_ctx,
0451       THREAD,
0452       TQ_EVENT_MUTEX_D_OBTAIN
0453     );
0454 
0455     TQSetScheduler(
0456       ctx->tq_ctx,
0457       THREAD_HELPER_A,
0458       other_scheduler_id,
0459       PRIO_NEARLY_IDLE - 1
0460     );
0461     TQSendAndWaitForExecutionStop(
0462       ctx->tq_ctx,
0463       THREAD_HELPER_A,
0464       TQ_EVENT_MUTEX_D_OBTAIN
0465     );
0466 
0467     if ( rtems_scheduler_get_processor_maximum() >= 3 ) {
0468       TQSetScheduler(
0469         ctx->tq_ctx,
0470         THREAD_HELPER_B,
0471         SCHEDULER_C_ID,
0472         PRIO_NORMAL
0473       );
0474       TQSendAndWaitForExecutionStop(
0475         ctx->tq_ctx,
0476         THREAD_HELPER_B,
0477         TQ_EVENT_MUTEX_D_OBTAIN
0478       );
0479     }
0480   }
0481 }
0482 
0483 static rtems_task_priority PrepareQueue(
0484   Context            *ctx,
0485   rtems_task_priority priority
0486 )
0487 {
0488   switch ( ctx->queue_node ) {
0489     case TQ_NODE_ONLY:
0490       ctx->queue_helper_surrender = false;
0491       break;
0492     case TQ_NODE_VITAL:
0493       ctx->queue_helper_surrender = true;
0494       TQSetScheduler(
0495         ctx->tq_ctx,
0496         QUEUE_HELPER,
0497         ctx->scheduler_id,
0498         priority + 1
0499       );
0500       TQSendAndWaitForExecutionStop(
0501         ctx->tq_ctx,
0502         QUEUE_HELPER,
0503         TQ_EVENT_ENQUEUE
0504       );
0505       break;
0506     case TQ_NODE_DISPENSABLE:
0507       ctx->queue_helper_surrender = true;
0508       --priority;
0509       TQSetScheduler(
0510         ctx->tq_ctx,
0511         QUEUE_HELPER,
0512         ctx->scheduler_id,
0513         priority
0514       );
0515       TQSendAndWaitForExecutionStop(
0516         ctx->tq_ctx,
0517         QUEUE_HELPER,
0518         TQ_EVENT_ENQUEUE
0519       );
0520       break;
0521   }
0522 
0523   ctx->queue_priority = priority;
0524 
0525   return priority;
0526 }
0527 
0528 static rtems_task_priority PrepareOwner(
0529   Context            *ctx,
0530   rtems_task_priority priority
0531 )
0532 {
0533   switch ( ctx->owner_node ) {
0534     case TQ_NODE_ONLY:
0535       ctx->owner_helper_release = false;
0536       TQSetPriority( ctx->tq_ctx, OWNER, PRIO_FLEXIBLE );
0537       break;
0538     case TQ_NODE_VITAL:
0539       if ( ctx->scheduler_id == SCHEDULER_A_ID ) {
0540         ctx->owner_helper_release = false;
0541         TQSetPriority( ctx->tq_ctx, OWNER, priority + 1 );
0542       } else {
0543         ctx->owner_helper_release = true;
0544         TQSetPriority( ctx->tq_ctx, OWNER, PRIO_FLEXIBLE );
0545         TQSetScheduler(
0546           ctx->tq_ctx,
0547           OWNER_HELPER,
0548           ctx->scheduler_id,
0549           priority + 1
0550         );
0551         TQSendAndWaitForExecutionStop(
0552           ctx->tq_ctx,
0553           OWNER_HELPER,
0554           TQ_EVENT_MUTEX_A_OBTAIN
0555         );
0556       }
0557       break;
0558     case TQ_NODE_DISPENSABLE:
0559       --priority;
0560 
0561       if ( ctx->scheduler_id == SCHEDULER_A_ID ) {
0562         ctx->owner_helper_release = false;
0563         TQSetPriority( ctx->tq_ctx, OWNER, priority );
0564       } else {
0565         ctx->owner_helper_release = true;
0566         TQSetPriority( ctx->tq_ctx, OWNER, PRIO_FLEXIBLE );
0567         TQSetScheduler(
0568           ctx->tq_ctx,
0569           OWNER_HELPER,
0570           ctx->scheduler_id,
0571           priority
0572         );
0573         TQSendAndWaitForExecutionStop(
0574           ctx->tq_ctx,
0575           OWNER_HELPER,
0576           TQ_EVENT_MUTEX_A_OBTAIN
0577         );
0578       }
0579       break;
0580   }
0581 
0582   ctx->owner_priority = priority;
0583 
0584   return priority;
0585 }
0586 
0587 static rtems_task_priority PrepareOwnerQueue(
0588   Context            *ctx,
0589   rtems_task_priority priority
0590 )
0591 {
0592   if ( ctx->owner_obtain != 0 ) {
0593     switch ( ctx->owner_queue_node ) {
0594       case TQ_NODE_ONLY:
0595         ctx->owner_queue_helper_release = false;
0596         break;
0597       case TQ_NODE_VITAL:
0598         ctx->owner_queue_helper_release = true;
0599         TQSetScheduler(
0600           ctx->tq_ctx,
0601           OWNER_QUEUE_HELPER,
0602           ctx->scheduler_id,
0603           priority + 1
0604         );
0605         TQSendAndWaitForExecutionStop(
0606           ctx->tq_ctx,
0607           OWNER_QUEUE_HELPER,
0608           ctx->owner_obtain
0609         );
0610         break;
0611       case TQ_NODE_DISPENSABLE:
0612         ctx->owner_queue_helper_release = true;
0613         --priority;
0614         TQSetScheduler(
0615           ctx->tq_ctx,
0616           OWNER_QUEUE_HELPER,
0617           ctx->scheduler_id,
0618           priority
0619         );
0620         TQSendAndWaitForExecutionStop(
0621           ctx->tq_ctx,
0622           OWNER_QUEUE_HELPER,
0623           ctx->owner_obtain
0624         );
0625         break;
0626     }
0627 
0628     ctx->owner_queue_priority = priority;
0629   } else {
0630     ctx->owner_queue_helper_release = false;
0631     ctx->owner_queue_priority = PRIO_INVALID;
0632   }
0633 
0634   return priority;
0635 }
0636 
0637 static void PrepareOwnerOwner( Context *ctx, rtems_task_priority priority )
0638 {
0639   if ( ctx->owner_obtain != 0 ) {
0640     switch ( ctx->owner_owner_node ) {
0641       case TQ_NODE_ONLY:
0642         ctx->owner_owner_helper_release = false;
0643         TQSetPriority( ctx->tq_ctx, OWNER_OWNER, PRIO_FLEXIBLE );
0644         break;
0645       case TQ_NODE_VITAL:
0646         if ( ctx->scheduler_id == SCHEDULER_A_ID ) {
0647           ctx->owner_owner_helper_release = false;
0648           TQSetPriority( ctx->tq_ctx, OWNER_OWNER, priority + 1 );
0649         } else {
0650           ctx->owner_owner_helper_release = true;
0651           TQSetPriority( ctx->tq_ctx, OWNER_OWNER, PRIO_FLEXIBLE );
0652           TQSetScheduler(
0653             ctx->tq_ctx,
0654             OWNER_OWNER_HELPER,
0655             ctx->scheduler_id,
0656             priority + 1
0657           );
0658           TQSendAndWaitForExecutionStop(
0659             ctx->tq_ctx,
0660             OWNER_OWNER_HELPER,
0661             TQ_EVENT_MUTEX_B_OBTAIN
0662           );
0663         }
0664         break;
0665       case TQ_NODE_DISPENSABLE:
0666         --priority;
0667 
0668         if ( ctx->scheduler_id == SCHEDULER_A_ID ) {
0669           ctx->owner_owner_helper_release = false;
0670           TQSetPriority( ctx->tq_ctx, OWNER_OWNER, priority );
0671         } else {
0672           ctx->owner_owner_helper_release = true;
0673           TQSetPriority( ctx->tq_ctx, OWNER_OWNER, PRIO_FLEXIBLE );
0674           TQSetScheduler(
0675             ctx->tq_ctx,
0676             OWNER_OWNER_HELPER,
0677             ctx->scheduler_id,
0678             priority
0679           );
0680           TQSendAndWaitForExecutionStop(
0681             ctx->tq_ctx,
0682             OWNER_OWNER_HELPER,
0683             TQ_EVENT_MUTEX_B_OBTAIN
0684           );
0685         }
0686         break;
0687     }
0688 
0689     ctx->owner_owner_priority = priority;
0690   } else {
0691     ctx->owner_owner_helper_release = false;
0692     ctx->owner_owner_priority = PRIO_INVALID;
0693   }
0694 }
0695 
0696 static void ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Prepare(
0697   ScoreTqReqTimeoutPriorityInherit_Context          *ctx,
0698   ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler state
0699 )
0700 {
0701   switch ( state ) {
0702     case ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Home: {
0703       /*
0704        * While the home scheduler of the thread is the home scheduler of the
0705        * thread queue owner.
0706        */
0707       ctx->scheduler_id = SCHEDULER_A_ID;
0708       break;
0709     }
0710 
0711     case ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Helping: {
0712       /*
0713        * While the home scheduler of the thread is a helping scheduler of the
0714        * thread queue owner.
0715        */
0716       ctx->scheduler_id = SCHEDULER_B_ID;
0717       break;
0718     }
0719 
0720     case ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_NA:
0721       break;
0722   }
0723 }
0724 
0725 static void ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_Prepare(
0726   ScoreTqReqTimeoutPriorityInherit_Context              *ctx,
0727   ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler state
0728 )
0729 {
0730   switch ( state ) {
0731     case ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_One: {
0732       /*
0733        * While the thread has exactly one eligible scheduler.
0734        */
0735       ctx->other_scheduler = false;
0736       break;
0737     }
0738 
0739     case ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_More: {
0740       /*
0741        * While the thread has at least two eligible scheduler.
0742        */
0743       ctx->other_scheduler = true;
0744       break;
0745     }
0746 
0747     case ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_NA:
0748       break;
0749   }
0750 }
0751 
0752 static void ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Prepare(
0753   ScoreTqReqTimeoutPriorityInherit_Context  *ctx,
0754   ScoreTqReqTimeoutPriorityInherit_Pre_Queue state
0755 )
0756 {
0757   switch ( state ) {
0758     case ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Only: {
0759       /*
0760        * While the priority node of the thread is the only priority node in the
0761        * priority queue associated with the scheduler of the thread queue.
0762        */
0763       ctx->queue_node = TQ_NODE_ONLY;
0764       break;
0765     }
0766 
0767     case ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Vital: {
0768       /*
0769        * While the priority node of the thread is not the only priority node in
0770        * the priority queue associated with the scheduler of the thread queue,
0771        * while the priority node of the thread is the highest priority node in
0772        * the priority queue.
0773        */
0774       ctx->queue_node = TQ_NODE_VITAL;
0775       break;
0776     }
0777 
0778     case ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Dispensable: {
0779       /*
0780        * While the priority node of the thread is not the only priority node in
0781        * the priority queue associated with the scheduler of the thread queue,
0782        * while the priority node of the thread is not the highest priority node
0783        * in the priority queue.
0784        */
0785       ctx->queue_node = TQ_NODE_DISPENSABLE;
0786       break;
0787     }
0788 
0789     case ScoreTqReqTimeoutPriorityInherit_Pre_Queue_NA:
0790       break;
0791   }
0792 }
0793 
0794 static void ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_Prepare(
0795   ScoreTqReqTimeoutPriorityInherit_Context          *ctx,
0796   ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority state
0797 )
0798 {
0799   switch ( state ) {
0800     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_Only: {
0801       /*
0802        * While the priority node of the thread queue is the only priority node
0803        * associated with the scheduler available to the owner.
0804        */
0805       ctx->owner_node = TQ_NODE_ONLY;
0806       break;
0807     }
0808 
0809     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_Vital: {
0810       /*
0811        * While the priority node of the thread queue is not the only priority
0812        * node associated with the scheduler available to the owner, while the
0813        * priority node of the thread queue is the highest priority node
0814        * available to the owner.
0815        */
0816       ctx->owner_node = TQ_NODE_VITAL;
0817       break;
0818     }
0819 
0820     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_Dispensable: {
0821       /*
0822        * While the priority node of the thread queue is not the only priority
0823        * node associated with the scheduler available to the owner, while the
0824        * priority node of the thread queue is not the highest priority node
0825        * available to the owner.
0826        */
0827       ctx->owner_node = TQ_NODE_DISPENSABLE;
0828       break;
0829     }
0830 
0831     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_NA:
0832       break;
0833   }
0834 }
0835 
0836 static void ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_Prepare(
0837   ScoreTqReqTimeoutPriorityInherit_Context       *ctx,
0838   ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState state
0839 )
0840 {
0841   switch ( state ) {
0842     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_NotEnqueued: {
0843       /*
0844        * While the owner of the thread queue is not enqueued on a thread queue.
0845        */
0846       ctx->owner_obtain = 0;
0847       ctx->owner_release = 0;
0848       break;
0849     }
0850 
0851     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_FIFO: {
0852       /*
0853        * While the owner of the thread queue is enqueued on a thread queue in
0854        * FIFO order.
0855        */
0856       ctx->owner_obtain = TQ_EVENT_MUTEX_FIFO_OBTAIN;
0857       ctx->owner_release = TQ_EVENT_MUTEX_FIFO_RELEASE;
0858       break;
0859     }
0860 
0861     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_Priority: {
0862       /*
0863        * While the owner of the thread queue is enqueued on a thread queue in
0864        * priority order.
0865        */
0866       ctx->owner_obtain = TQ_EVENT_MUTEX_NO_PROTOCOL_OBTAIN;
0867       ctx->owner_release = TQ_EVENT_MUTEX_NO_PROTOCOL_RELEASE;
0868       break;
0869     }
0870 
0871     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_PriorityInherit: {
0872       /*
0873        * While the owner of the thread queue is enqueued on a thread queue in
0874        * priority order with priority inheritance.
0875        */
0876       ctx->owner_obtain = TQ_EVENT_MUTEX_C_OBTAIN;
0877       ctx->owner_release = TQ_EVENT_MUTEX_C_RELEASE;
0878       break;
0879     }
0880 
0881     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_NA:
0882       break;
0883   }
0884 }
0885 
0886 static void ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_Prepare(
0887   ScoreTqReqTimeoutPriorityInherit_Context       *ctx,
0888   ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue state
0889 )
0890 {
0891   switch ( state ) {
0892     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_Only: {
0893       /*
0894        * While the priority node of the owner is the only priority node in the
0895        * priority queue associated with the scheduler of the thread queue on
0896        * which the owner is enqueued.
0897        */
0898       ctx->owner_queue_node = TQ_NODE_ONLY;
0899       break;
0900     }
0901 
0902     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_Vital: {
0903       /*
0904        * While the priority node of the owner is not the only priority node in
0905        * the priority queue associated with the scheduler of the thread queue
0906        * on which the owner is enqueued, while the priority node of the owner
0907        * is the highest priority node in the priority queue.
0908        */
0909       ctx->owner_queue_node = TQ_NODE_VITAL;
0910       break;
0911     }
0912 
0913     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_Dispensable: {
0914       /*
0915        * While the priority node of the owner is not the only priority node in
0916        * the priority queue associated with the scheduler of the thread queue
0917        * on which the owner is enqueued, while the priority node of the owner
0918        * is not the highest priority node in the priority queue.
0919        */
0920       ctx->owner_queue_node = TQ_NODE_DISPENSABLE;
0921       break;
0922     }
0923 
0924     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_NA:
0925       break;
0926   }
0927 }
0928 
0929 static void ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_Prepare(
0930   ScoreTqReqTimeoutPriorityInherit_Context               *ctx,
0931   ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority state
0932 )
0933 {
0934   switch ( state ) {
0935     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_Only: {
0936       /*
0937        * While the priority node of the thread queue on which the owner is
0938        * enqueued is the only priority node associated with the scheduler
0939        * available to the owner of the thread queue on which the owner is
0940        * enqueued.
0941        */
0942       ctx->owner_owner_node = TQ_NODE_ONLY;
0943       break;
0944     }
0945 
0946     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_Vital: {
0947       /*
0948        * While the priority node of the thread queue on which the owner is
0949        * enqueued is not the only priority node associated with the scheduler
0950        * available to the owner of the thread queue on which the owner is
0951        * enqueued, while the priority node of the thread queue on which the
0952        * owner is enqueued is the highest priority node available to the owner
0953        * of the thread queue on which the owner is enqueued.
0954        */
0955       ctx->owner_owner_node = TQ_NODE_VITAL;
0956       break;
0957     }
0958 
0959     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_Dispensable: {
0960       /*
0961        * While the priority node of the thread queue on which the owner is
0962        * enqueued is not the only priority node associated with the scheduler
0963        * available to the owner of the thread queue on which the owner is
0964        * enqueued, while the priority node of the thread queue is on which the
0965        * owner is enqueued not the highest priority node available to the owner
0966        * of the thread queue on which the owner is enqueued.
0967        */
0968       ctx->owner_owner_node = TQ_NODE_DISPENSABLE;
0969       break;
0970     }
0971 
0972     case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_NA:
0973       break;
0974   }
0975 }
0976 
0977 static void ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_Prepare(
0978   ScoreTqReqTimeoutPriorityInherit_Context      *ctx,
0979   ScoreTqReqTimeoutPriorityInherit_Pre_WaitState state
0980 )
0981 {
0982   switch ( state ) {
0983     case ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_Blocked: {
0984       /*
0985        * While the thread is in the blocked wait state.
0986        */
0987       ctx->wait_state = TQ_WAIT_STATE_BLOCKED;
0988       break;
0989     }
0990 
0991     case ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_IntendToBlock: {
0992       /*
0993        * While the thread is in the intend to block wait state.
0994        */
0995       ctx->wait_state = TQ_WAIT_STATE_INTEND_TO_BLOCK;
0996       break;
0997     }
0998 
0999     case ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_ReadyAgain: {
1000       /*
1001        * While the thread is in the ready again wait state.
1002        */
1003       ctx->wait_state = TQ_WAIT_STATE_READY_AGAIN;
1004       break;
1005     }
1006 
1007     case ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_NA:
1008       break;
1009   }
1010 }
1011 
1012 static void ScoreTqReqTimeoutPriorityInherit_Post_Status_Check(
1013   ScoreTqReqTimeoutPriorityInherit_Context    *ctx,
1014   ScoreTqReqTimeoutPriorityInherit_Post_Status state
1015 )
1016 {
1017   switch ( state ) {
1018     case ScoreTqReqTimeoutPriorityInherit_Post_Status_Ok: {
1019       /*
1020        * The return status of the directive call shall be derived from
1021        * STATUS_SUCCESSFUL.
1022        */
1023       T_eq_int(
1024         ctx->tq_ctx->status[ THREAD ],
1025         TQConvertStatus( ctx->tq_ctx, STATUS_SUCCESSFUL )
1026       );
1027       break;
1028     }
1029 
1030     case ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout: {
1031       /*
1032        * The return status of the directive call shall be derived from
1033        * STATUS_TIMEOUT.
1034        */
1035       T_eq_int(
1036         ctx->tq_ctx->status[ THREAD ],
1037         TQConvertStatus( ctx->tq_ctx, STATUS_TIMEOUT )
1038       );
1039       break;
1040     }
1041 
1042     case ScoreTqReqTimeoutPriorityInherit_Post_Status_NA:
1043       break;
1044   }
1045 }
1046 
1047 static void ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Check(
1048   ScoreTqReqTimeoutPriorityInherit_Context     *ctx,
1049   ScoreTqReqTimeoutPriorityInherit_Post_Unblock state
1050 )
1051 {
1052   size_t i;
1053 
1054   i = 0;
1055 
1056   switch ( state ) {
1057     case ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes: {
1058       /*
1059        * The thread shall be unblocked by the timeout operation.
1060        */
1061       T_true( GetUnblock( ctx, &i ) );
1062       T_false( GetUnblock( ctx, &i ) );
1063       break;
1064     }
1065 
1066     case ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No: {
1067       /*
1068        * The thread shall not be unblocked by the timeout operation.
1069        */
1070       T_false( GetUnblock( ctx, &i ) );
1071       break;
1072     }
1073 
1074     case ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA:
1075       break;
1076   }
1077 }
1078 
1079 static void ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Check(
1080   ScoreTqReqTimeoutPriorityInherit_Context           *ctx,
1081   ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority state
1082 )
1083 {
1084   switch ( state ) {
1085     case ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop: {
1086       /*
1087        * The priority of the owner with respect to the scheduler shall not
1088        * change by the timeout operation.
1089        */
1090       T_eq_u32( ctx->owner_priority_after, ctx->owner_priority );
1091       break;
1092     }
1093 
1094     case ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower: {
1095       /*
1096        * The priority of the owner with respect to the scheduler shall be
1097        * lowered to the next highest priority.
1098        */
1099       T_eq_u32( ctx->owner_priority_after, ctx->owner_priority + 1 );
1100       break;
1101     }
1102 
1103     case ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop: {
1104       /*
1105        * The owner shall not have a priority with respect to the scheduler.
1106        */
1107       T_eq_u32( ctx->owner_priority_after, PRIO_INVALID );
1108       break;
1109     }
1110 
1111     case ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA:
1112       break;
1113   }
1114 }
1115 
1116 static void ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Check(
1117   ScoreTqReqTimeoutPriorityInherit_Context                *ctx,
1118   ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority state
1119 )
1120 {
1121   switch ( state ) {
1122     case ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop: {
1123       /*
1124        * The priority of the owner of the thread queue on which the owner is
1125        * enqueued with respect to the scheduler shall not change by the timeout
1126        * operation.
1127        */
1128       T_eq_u32( ctx->owner_owner_priority_after, ctx->owner_owner_priority );
1129       break;
1130     }
1131 
1132     case ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower: {
1133       /*
1134        * The priority of the owner of the thread queue on which the owner is
1135        * enqueued with respect to the scheduler shall be lowered to the next
1136        * highest priority.
1137        */
1138       T_eq_u32( ctx->owner_owner_priority_after, ctx->owner_owner_priority + 1 );
1139       break;
1140     }
1141 
1142     case ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Drop: {
1143       /*
1144        * The owner of the thread queue on which the owner is enqueued shall not
1145        * have a priority with respect to the scheduler.
1146        */
1147       T_eq_u32( ctx->owner_owner_priority_after, PRIO_INVALID );
1148       break;
1149     }
1150 
1151     case ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA:
1152       break;
1153   }
1154 }
1155 
1156 static void ScoreTqReqTimeoutPriorityInherit_Setup(
1157   ScoreTqReqTimeoutPriorityInherit_Context *ctx
1158 )
1159 {
1160   ctx->request.arg = ctx;
1161   TQReset( ctx->tq_ctx );
1162   SetSelfPriority( PRIO_NEARLY_IDLE );
1163 }
1164 
1165 static void ScoreTqReqTimeoutPriorityInherit_Setup_Wrap( void *arg )
1166 {
1167   ScoreTqReqTimeoutPriorityInherit_Context *ctx;
1168 
1169   ctx = arg;
1170   ctx->Map.in_action_loop = false;
1171   ScoreTqReqTimeoutPriorityInherit_Setup( ctx );
1172 }
1173 
1174 static void ScoreTqReqTimeoutPriorityInherit_Teardown(
1175   ScoreTqReqTimeoutPriorityInherit_Context *ctx
1176 )
1177 {
1178   TQReset( ctx->tq_ctx );
1179 }
1180 
1181 static void ScoreTqReqTimeoutPriorityInherit_Teardown_Wrap( void *arg )
1182 {
1183   ScoreTqReqTimeoutPriorityInherit_Context *ctx;
1184 
1185   ctx = arg;
1186   ctx->Map.in_action_loop = false;
1187   ScoreTqReqTimeoutPriorityInherit_Teardown( ctx );
1188 }
1189 
1190 static void ScoreTqReqTimeoutPriorityInherit_Prepare(
1191   ScoreTqReqTimeoutPriorityInherit_Context *ctx
1192 )
1193 {
1194   ctx->queue_helper_surrender = false;
1195   ctx->owner_helper_release = false;
1196   ctx->owner_queue_helper_release = false;
1197   ctx->owner_owner_helper_release = false;
1198 }
1199 
1200 static void ScoreTqReqTimeoutPriorityInherit_Action(
1201   ScoreTqReqTimeoutPriorityInherit_Context *ctx
1202 )
1203 {
1204   rtems_task_priority priority;
1205 
1206   priority = PRIO_FLEXIBLE;
1207   TQSetScheduler( ctx->tq_ctx, THREAD, ctx->scheduler_id, priority );
1208 
1209   TQSend(
1210     ctx->tq_ctx,
1211     OWNER,
1212     TQ_EVENT_MUTEX_A_OBTAIN | TQ_EVENT_ENQUEUE
1213   );
1214 
1215   if ( ctx->owner_obtain != 0 ) {
1216     TQSend(
1217       ctx->tq_ctx,
1218       OWNER_OWNER,
1219       TQ_EVENT_MUTEX_B_OBTAIN | ctx->owner_obtain
1220     );
1221     TQSend( ctx->tq_ctx, OWNER, ctx->owner_obtain | ctx->owner_release );
1222   }
1223 
1224   PrepareThread( ctx );
1225   priority = PrepareQueue( ctx, priority );
1226   priority = PrepareOwner( ctx, priority );
1227   priority = PrepareOwnerQueue( ctx, priority );
1228   PrepareOwnerOwner( ctx, priority );
1229 
1230   TQClearDone( ctx->tq_ctx, THREAD );
1231 
1232   switch ( ctx->wait_state ) {
1233     case TQ_WAIT_STATE_BLOCKED:
1234       TQSendAndWaitForExecutionStop(
1235         ctx->tq_ctx,
1236         THREAD,
1237         TQ_EVENT_ENQUEUE_TIMED
1238       );
1239       Tick( ctx );
1240       GetPriorities( ctx );
1241       TQSend( ctx->tq_ctx, OWNER, TQ_EVENT_SURRENDER );
1242       break;
1243     case TQ_WAIT_STATE_INTEND_TO_BLOCK:
1244       T_scheduler_set_event_handler( SchedulerBlock, ctx );
1245       TQSendAndWaitForExecutionStop(
1246         ctx->tq_ctx,
1247         THREAD,
1248         TQ_EVENT_ENQUEUE_TIMED
1249       );
1250       GetPriorities( ctx );
1251       TQSend( ctx->tq_ctx, OWNER, TQ_EVENT_SURRENDER );
1252       break;
1253     case TQ_WAIT_STATE_READY_AGAIN:
1254       TQSendAndWaitForExecutionStop(
1255         ctx->tq_ctx,
1256         THREAD,
1257         TQ_EVENT_ENQUEUE_TIMED
1258       );
1259       T_scheduler_set_event_handler( SchedulerUnblock, ctx );
1260       TQSend( ctx->tq_ctx, OWNER, TQ_EVENT_SURRENDER );
1261       GetPriorities( ctx );
1262       TQSend( ctx->tq_ctx, THREAD, TQ_EVENT_SURRENDER );
1263       break;
1264   }
1265 
1266   TQWaitForDone( ctx->tq_ctx, THREAD );
1267   TQWaitForExecutionStop( ctx->tq_ctx, THREAD );
1268 }
1269 
1270 static void ScoreTqReqTimeoutPriorityInherit_Cleanup(
1271   ScoreTqReqTimeoutPriorityInherit_Context *ctx
1272 )
1273 {
1274   if ( ctx->owner_obtain != 0 ) {
1275     TQSend(
1276       ctx->tq_ctx,
1277       OWNER_OWNER,
1278       TQ_EVENT_MUTEX_B_RELEASE | ctx->owner_release
1279     );
1280 
1281     if ( ctx->owner_queue_helper_release ) {
1282       TQSendAndWaitForExecutionStop(
1283         ctx->tq_ctx,
1284         OWNER_QUEUE_HELPER,
1285         ctx->owner_release
1286       );
1287     }
1288 
1289     if ( ctx->owner_owner_helper_release ) {
1290       TQSendAndWaitForExecutionStop(
1291         ctx->tq_ctx,
1292         OWNER_OWNER_HELPER,
1293         TQ_EVENT_MUTEX_B_RELEASE
1294       );
1295     }
1296   }
1297 
1298   TQSend( ctx->tq_ctx, OWNER, TQ_EVENT_MUTEX_A_RELEASE );
1299 
1300   if ( ctx->queue_helper_surrender ) {
1301     TQSendAndWaitForExecutionStop(
1302       ctx->tq_ctx,
1303       QUEUE_HELPER,
1304       TQ_EVENT_SURRENDER
1305     );
1306   }
1307 
1308   if ( ctx->owner_helper_release ) {
1309     TQSendAndWaitForExecutionStop(
1310       ctx->tq_ctx,
1311       OWNER_HELPER,
1312       TQ_EVENT_MUTEX_A_RELEASE
1313     );
1314   }
1315 
1316   if ( ctx->other_scheduler ) {
1317     TQSendAndWaitForExecutionStop(
1318       ctx->tq_ctx,
1319       THREAD,
1320       TQ_EVENT_MUTEX_D_RELEASE
1321     );
1322     TQSendAndWaitForExecutionStop(
1323       ctx->tq_ctx,
1324       THREAD_HELPER_A,
1325       TQ_EVENT_MUTEX_D_RELEASE
1326     );
1327 
1328     if ( rtems_scheduler_get_processor_maximum() >= 3 ) {
1329       TQSendAndWaitForExecutionStop(
1330         ctx->tq_ctx,
1331         THREAD_HELPER_B,
1332         TQ_EVENT_MUTEX_D_RELEASE
1333       );
1334     }
1335   }
1336 }
1337 
1338 static const ScoreTqReqTimeoutPriorityInherit_Entry
1339 ScoreTqReqTimeoutPriorityInherit_Entries[] = {
1340 #if !defined(RTEMS_SMP)
1341   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1342     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1343     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1344     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1345 #else
1346   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1347     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1348     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1349     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1350 #endif
1351   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1352     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1353     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1354     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1355   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1356     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1357     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1358     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1359 #if !defined(RTEMS_SMP)
1360   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1361     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1362     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1363     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1364 #else
1365   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1366     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1367     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1368     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1369 #endif
1370 #if !defined(RTEMS_SMP)
1371   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1372     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1373     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1374     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1375 #else
1376   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1377     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1378     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1379     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1380 #endif
1381 #if !defined(RTEMS_SMP)
1382   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1383     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1384     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1385     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1386 #else
1387   { 0, 0, 0, 0, 0, 0, 1, 1, 0,
1388     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1389     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1390     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1391     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1392 #endif
1393 #if !defined(RTEMS_SMP)
1394   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1395     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1396     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1397     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1398 #else
1399   { 0, 0, 0, 0, 0, 0, 1, 1, 0,
1400     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1401     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1402     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1403     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1404 #endif
1405 #if !defined(RTEMS_SMP)
1406   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1407     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1408     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1409     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1410 #else
1411   { 0, 0, 0, 0, 0, 0, 1, 1, 0,
1412     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1413     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1414     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1415     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1416 #endif
1417 #if !defined(RTEMS_SMP)
1418   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1419     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1420     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1421     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1422 #else
1423   { 0, 0, 0, 0, 0, 0, 1, 1, 0,
1424     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1425     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1426     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1427     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1428 #endif
1429 #if !defined(RTEMS_SMP)
1430   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1431     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1432     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1433     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1434 #else
1435   { 0, 0, 0, 0, 0, 0, 0, 1, 0,
1436     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1437     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1438     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1439     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1440 #endif
1441 #if !defined(RTEMS_SMP)
1442   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1443     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1444     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1445     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1446 #else
1447   { 0, 0, 0, 0, 0, 0, 0, 1, 0,
1448     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1449     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1450     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1451     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1452 #endif
1453   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1454     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1455     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1456     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1457 #if !defined(RTEMS_SMP)
1458   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1459     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1460     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1461     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1462 #else
1463   { 0, 0, 0, 0, 0, 0, 1, 1, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_Ok,
1464     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1465     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1466     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1467 #endif
1468 #if !defined(RTEMS_SMP)
1469   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1470     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1471     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1472     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1473 #else
1474   { 0, 0, 0, 0, 0, 0, 0, 1, 0,
1475     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1476     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1477     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1478     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1479 #endif
1480 #if !defined(RTEMS_SMP)
1481   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1482     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1483     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1484     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1485 #else
1486   { 0, 0, 0, 0, 0, 0, 0, 1, 0,
1487     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1488     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1489     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1490     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1491 #endif
1492 #if !defined(RTEMS_SMP)
1493   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1494     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1495     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1496     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1497 #else
1498   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1499     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1500     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1501     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1502     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
1503 #endif
1504 #if !defined(RTEMS_SMP)
1505   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1506     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1507     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1508     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1509 #else
1510   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1511     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1512     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1513     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1514     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
1515 #endif
1516 #if !defined(RTEMS_SMP)
1517   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1518     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1519     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1520     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1521 #else
1522   { 0, 0, 0, 0, 0, 0, 1, 1, 0,
1523     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1524     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1525     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
1526     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1527 #endif
1528 #if !defined(RTEMS_SMP)
1529   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1530     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1531     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1532     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1533 #else
1534   { 0, 0, 0, 0, 0, 0, 1, 1, 0,
1535     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1536     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1537     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
1538     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1539 #endif
1540 #if !defined(RTEMS_SMP)
1541   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1542     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1543     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1544     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1545 #else
1546   { 0, 0, 0, 0, 0, 0, 1, 1, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_Ok,
1547     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1548     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
1549     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1550 #endif
1551 #if !defined(RTEMS_SMP)
1552   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1553     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1554     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1555     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1556 #else
1557   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1558     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1559     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1560     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1561     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
1562 #endif
1563 #if !defined(RTEMS_SMP)
1564   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1565     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1566     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1567     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1568 #else
1569   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1570     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1571     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1572     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1573     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
1574 #endif
1575 #if !defined(RTEMS_SMP)
1576   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1577     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1578     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1579     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1580 #else
1581   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1582     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1583     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1584     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1585     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower },
1586 #endif
1587 #if !defined(RTEMS_SMP)
1588   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1589     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1590     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1591     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1592 #else
1593   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1594     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1595     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1596     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1597     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower },
1598 #endif
1599   { 0, 0, 0, 0, 0, 0, 1, 1, 0,
1600     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1601     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1602     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1603     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1604   { 0, 0, 0, 0, 0, 0, 1, 1, 0,
1605     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1606     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1607     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1608     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1609 #if !defined(RTEMS_SMP)
1610   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1611     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1612     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1613     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1614 #else
1615   { 0, 0, 0, 0, 0, 0, 1, 1, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_Ok,
1616     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1617     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1618     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1619 #endif
1620 #if !defined(RTEMS_SMP)
1621   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1622     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1623     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1624     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1625 #else
1626   { 0, 0, 0, 0, 0, 0, 0, 1, 0,
1627     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1628     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1629     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
1630     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1631 #endif
1632 #if !defined(RTEMS_SMP)
1633   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1634     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1635     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1636     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1637 #else
1638   { 0, 0, 0, 0, 0, 0, 0, 1, 0,
1639     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1640     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1641     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
1642     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1643 #endif
1644   { 0, 0, 0, 0, 0, 0, 1, 1, 0,
1645     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1646     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1647     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1648     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1649   { 0, 0, 0, 0, 0, 0, 1, 1, 0,
1650     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1651     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1652     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1653     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1654   { 0, 0, 0, 0, 0, 0, 1, 1, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_Ok,
1655     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1656     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1657     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1658   { 0, 0, 0, 0, 0, 0, 0, 1, 0,
1659     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1660     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1661     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1662     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1663   { 0, 0, 0, 0, 0, 0, 0, 1, 0,
1664     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1665     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1666     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1667     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1668 #if !defined(RTEMS_SMP)
1669   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1670     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1671     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1672     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1673 #else
1674   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1675     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1676     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1677     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
1678     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
1679 #endif
1680 #if !defined(RTEMS_SMP)
1681   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1682     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1683     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1684     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1685 #else
1686   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1687     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1688     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1689     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
1690     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
1691 #endif
1692   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1693     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1694     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1695     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1696     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
1697   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1698     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1699     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1700     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1701     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
1702   { 0, 0, 0, 0, 0, 0, 0, 1, 0,
1703     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1704     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1705     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1706     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1707   { 0, 0, 0, 0, 0, 0, 0, 1, 0,
1708     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1709     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1710     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1711     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1712   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1713     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1714     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1715     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1716     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
1717   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1718     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1719     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1720     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1721     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
1722 #if !defined(RTEMS_SMP)
1723   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1724     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1725     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1726     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1727 #else
1728   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1729     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1730     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1731     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
1732     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower },
1733 #endif
1734 #if !defined(RTEMS_SMP)
1735   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1736     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1737     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1738     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1739 #else
1740   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1741     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1742     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1743     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
1744     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower },
1745 #endif
1746   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1747     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1748     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1749     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1750     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower },
1751   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1752     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1753     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1754     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
1755     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower },
1756   { 0, 0, 0, 0, 0, 0, 1, 1, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_Ok,
1757     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1758     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
1759     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1760 #if !defined(RTEMS_SMP)
1761   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1762     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1763     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1764     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
1765 #else
1766   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1767     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1768     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
1769     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
1770     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Drop },
1771 #endif
1772 #if !defined(RTEMS_SMP)
1773   { 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
1774     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
1775     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
1776     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA }
1777 #else
1778   { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1779     ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
1780     ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
1781     ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
1782     ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Drop }
1783 #endif
1784 };
1785 
1786 static const uint8_t
1787 ScoreTqReqTimeoutPriorityInherit_Map[] = {
1788   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2,
1789   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2,
1790   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
1791   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
1792   1, 2, 2, 2, 2, 2, 2, 24, 25, 31, 24, 25, 31, 2, 2, 2, 24, 25, 31, 24, 25, 31,
1793   2, 2, 2, 1, 1, 1, 24, 25, 31, 2, 2, 2, 24, 25, 11, 24, 25, 11, 2, 2, 2, 24,
1794   25, 11, 24, 25, 11, 2, 2, 2, 1, 1, 1, 24, 25, 11, 2, 2, 2, 32, 33, 11, 32,
1795   33, 11, 2, 2, 2, 32, 33, 11, 32, 33, 11, 2, 2, 2, 1, 1, 1, 32, 33, 11, 2, 2,
1796   2, 44, 45, 11, 36, 37, 11, 2, 2, 2, 44, 45, 11, 36, 37, 11, 2, 2, 2, 1, 1, 1,
1797   36, 37, 11, 2, 2, 2, 1, 1, 1, 29, 30, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
1798   1, 1, 1, 29, 30, 46, 2, 2, 2, 1, 1, 1, 29, 30, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1799   2, 2, 2, 1, 1, 1, 29, 30, 11, 2, 2, 2, 1, 1, 1, 38, 39, 11, 1, 1, 1, 1, 1, 1,
1800   1, 1, 1, 2, 2, 2, 1, 1, 1, 38, 39, 11, 2, 2, 2, 1, 1, 1, 40, 41, 11, 1, 1, 1,
1801   1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 40, 41, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1802   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1803   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1804   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1805   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 24, 25,
1806   31, 24, 25, 31, 2, 2, 2, 24, 25, 31, 24, 25, 31, 2, 2, 2, 1, 1, 1, 24, 25,
1807   31, 2, 2, 2, 24, 25, 11, 24, 25, 11, 2, 2, 2, 24, 25, 11, 24, 25, 11, 2, 2,
1808   2, 1, 1, 1, 24, 25, 11, 2, 2, 2, 32, 33, 11, 32, 33, 11, 2, 2, 2, 32, 33, 11,
1809   32, 33, 11, 2, 2, 2, 1, 1, 1, 32, 33, 11, 2, 2, 2, 44, 45, 11, 36, 37, 11, 2,
1810   2, 2, 44, 45, 11, 36, 37, 11, 2, 2, 2, 1, 1, 1, 36, 37, 11, 2, 2, 2, 1, 1, 1,
1811   29, 30, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 29, 30, 46, 2, 2, 2,
1812   1, 1, 1, 29, 30, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 29, 30, 11,
1813   2, 2, 2, 1, 1, 1, 38, 39, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1,
1814   38, 39, 11, 2, 2, 2, 1, 1, 1, 40, 41, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
1815   1, 1, 1, 40, 41, 11, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
1816   2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1817   2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1818   1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
1819   1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1820   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1821   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1822   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1823   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 29, 30, 11, 1,
1824   1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 29, 30, 11, 2, 2, 2, 1, 1, 1, 29,
1825   30, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 29, 30, 11, 2, 2, 2, 1,
1826   1, 1, 38, 39, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 38, 39, 11, 2,
1827   2, 2, 1, 1, 1, 40, 41, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 40,
1828   41, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0,
1829   0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0,
1830   0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1831   0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1832   3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 5, 6, 12, 5, 6, 12, 3, 3, 3, 5, 6, 12, 5, 6,
1833   12, 3, 3, 3, 0, 0, 0, 5, 6, 12, 3, 3, 3, 5, 6, 4, 5, 6, 4, 3, 3, 3, 5, 6, 4,
1834   5, 6, 4, 3, 3, 3, 0, 0, 0, 5, 6, 4, 3, 3, 3, 9, 10, 4, 9, 10, 4, 3, 3, 3, 9,
1835   10, 4, 9, 10, 4, 3, 3, 3, 0, 0, 0, 9, 10, 4, 3, 3, 3, 22, 23, 4, 20, 21, 4,
1836   3, 3, 3, 22, 23, 4, 20, 21, 4, 3, 3, 3, 0, 0, 0, 20, 21, 4, 3, 3, 3, 0, 0, 0,
1837   7, 8, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 7, 8, 26, 3, 3, 3, 0,
1838   0, 0, 7, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 7, 8, 4, 3, 3, 3,
1839   0, 0, 0, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 13, 14, 4,
1840   3, 3, 3, 0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 15,
1841   16, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0,
1842   0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0,
1843   0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1844   0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1845   3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 5, 6, 12, 5, 6, 12, 3, 3, 3, 5, 6, 12, 5, 6,
1846   12, 3, 3, 3, 0, 0, 0, 5, 6, 12, 3, 3, 3, 5, 6, 4, 5, 6, 4, 3, 3, 3, 5, 6, 4,
1847   5, 6, 4, 3, 3, 3, 0, 0, 0, 5, 6, 4, 3, 3, 3, 9, 10, 4, 9, 10, 4, 3, 3, 3, 9,
1848   10, 4, 9, 10, 4, 3, 3, 3, 0, 0, 0, 9, 10, 4, 3, 3, 3, 22, 23, 4, 20, 21, 4,
1849   3, 3, 3, 22, 23, 4, 20, 21, 4, 3, 3, 3, 0, 0, 0, 20, 21, 4, 3, 3, 3, 0, 0, 0,
1850   7, 8, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 7, 8, 26, 3, 3, 3, 0,
1851   0, 0, 7, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 7, 8, 4, 3, 3, 3,
1852   0, 0, 0, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 13, 14, 4,
1853   3, 3, 3, 0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 15,
1854   16, 4, 3, 3, 3, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0,
1855   0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0,
1856   0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3,
1857   0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3,
1858   3, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1859   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1860   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1861   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1862   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0, 0,
1863   0, 0, 0, 3, 3, 3, 0, 0, 0, 7, 8, 4, 3, 3, 3, 0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0,
1864   0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 7, 8, 4, 3, 3, 3, 0, 0, 0, 13, 14, 4, 0, 0, 0,
1865   0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 13, 14, 4, 3, 3, 3, 0, 0, 0, 15, 16, 4,
1866   0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 15, 16, 4, 17, 18, 19, 17, 18,
1867   19, 17, 18, 19, 17, 18, 19, 17, 18, 19, 17, 18, 19, 17, 18, 19, 0, 0, 0, 17,
1868   18, 19, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17,
1869   18, 4, 0, 0, 0, 17, 18, 4, 27, 28, 4, 27, 28, 4, 27, 28, 4, 27, 28, 4, 27,
1870   28, 4, 27, 28, 4, 27, 28, 4, 0, 0, 0, 27, 28, 4, 47, 48, 4, 42, 43, 4, 34,
1871   35, 4, 42, 43, 4, 42, 43, 4, 34, 35, 4, 34, 35, 4, 0, 0, 0, 34, 35, 4, 5, 6,
1872   12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 0, 0, 0, 5,
1873   6, 12, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 0, 0,
1874   0, 5, 6, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9,
1875   10, 4, 0, 0, 0, 9, 10, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 22, 23, 4, 22, 23,
1876   4, 20, 21, 4, 20, 21, 4, 0, 0, 0, 20, 21, 4, 7, 8, 26, 0, 0, 0, 7, 8, 26, 0,
1877   0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 26, 0, 0, 0, 7, 8, 26, 7, 8, 4, 0, 0, 0, 7, 8,
1878   4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 13, 14, 4, 0, 0, 0,
1879   13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13, 14, 4, 15, 16,
1880   4, 0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4, 0, 0, 0, 15, 16,
1881   4, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 0,
1882   0, 0, 5, 6, 19, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6,
1883   4, 0, 0, 0, 5, 6, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10,
1884   4, 9, 10, 4, 0, 0, 0, 9, 10, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 22, 23, 4,
1885   22, 23, 4, 20, 21, 4, 20, 21, 4, 0, 0, 0, 20, 21, 4, 5, 6, 12, 5, 6, 12, 5,
1886   6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 0, 0, 0, 5, 6, 12, 5, 6, 4, 5,
1887   6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 0, 0, 0, 5, 6, 4, 9, 10,
1888   4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 0, 0, 0, 9,
1889   10, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 20,
1890   21, 4, 0, 0, 0, 20, 21, 4, 7, 8, 26, 0, 0, 0, 7, 8, 26, 0, 0, 0, 0, 0, 0, 0,
1891   0, 0, 7, 8, 26, 0, 0, 0, 7, 8, 26, 7, 8, 4, 0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0,
1892   0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 13, 14, 4, 0, 0, 0, 13, 14, 4, 0, 0,
1893   0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13, 14, 4, 15, 16, 4, 0, 0, 0, 15,
1894   16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4, 0, 0, 0, 15, 16, 4, 7, 8, 4, 0,
1895   0, 0, 7, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 7, 8, 4,
1896   0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 13,
1897   14, 4, 0, 0, 0, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13,
1898   14, 4, 15, 16, 4, 0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4,
1899   0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1900   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1901   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1902   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1903   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0, 0,
1904   0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 7, 8, 4, 0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0,
1905   0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 13, 14, 4, 0, 0, 0, 13, 14, 4, 0, 0,
1906   0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13, 14, 4, 15, 16, 4, 0, 0, 0, 15,
1907   16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4, 0, 0, 0, 15, 16, 4, 17, 18, 19,
1908   17, 18, 19, 17, 18, 19, 17, 18, 19, 17, 18, 19, 17, 18, 19, 17, 18, 19, 0, 0,
1909   0, 17, 18, 19, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17, 18,
1910   4, 17, 18, 4, 0, 0, 0, 17, 18, 4, 27, 28, 4, 27, 28, 4, 27, 28, 4, 27, 28, 4,
1911   27, 28, 4, 27, 28, 4, 27, 28, 4, 0, 0, 0, 27, 28, 4, 47, 48, 4, 42, 43, 4,
1912   34, 35, 4, 42, 43, 4, 42, 43, 4, 34, 35, 4, 34, 35, 4, 0, 0, 0, 34, 35, 4, 5,
1913   6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 0, 0, 0,
1914   5, 6, 12, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 0,
1915   0, 0, 5, 6, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9,
1916   10, 4, 0, 0, 0, 9, 10, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 22, 23, 4, 22, 23,
1917   4, 20, 21, 4, 20, 21, 4, 0, 0, 0, 20, 21, 4, 7, 8, 26, 0, 0, 0, 7, 8, 26, 0,
1918   0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 26, 0, 0, 0, 7, 8, 26, 7, 8, 4, 0, 0, 0, 7, 8,
1919   4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 13, 14, 4, 0, 0, 0,
1920   13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13, 14, 4, 15, 16,
1921   4, 0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4, 0, 0, 0, 15, 16,
1922   4, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 0,
1923   0, 0, 5, 6, 19, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6,
1924   4, 0, 0, 0, 5, 6, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10,
1925   4, 9, 10, 4, 0, 0, 0, 9, 10, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 22, 23, 4,
1926   22, 23, 4, 20, 21, 4, 20, 21, 4, 0, 0, 0, 20, 21, 4, 5, 6, 12, 5, 6, 12, 5,
1927   6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 0, 0, 0, 5, 6, 12, 5, 6, 4, 5,
1928   6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 0, 0, 0, 5, 6, 4, 9, 10,
1929   4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 0, 0, 0, 9,
1930   10, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 20,
1931   21, 4, 0, 0, 0, 20, 21, 4, 7, 8, 26, 0, 0, 0, 7, 8, 26, 0, 0, 0, 0, 0, 0, 0,
1932   0, 0, 7, 8, 26, 0, 0, 0, 7, 8, 26, 7, 8, 4, 0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0,
1933   0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 13, 14, 4, 0, 0, 0, 13, 14, 4, 0, 0,
1934   0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13, 14, 4, 15, 16, 4, 0, 0, 0, 15,
1935   16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4, 0, 0, 0, 15, 16, 4, 7, 8, 4, 0,
1936   0, 0, 7, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 7, 8, 4,
1937   0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 13,
1938   14, 4, 0, 0, 0, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13,
1939   14, 4, 15, 16, 4, 0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4,
1940   0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1941   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1942   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1943   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1944   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0, 0,
1945   0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 7, 8, 4, 0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0,
1946   0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 13, 14, 4, 0, 0, 0, 13, 14, 4, 0, 0,
1947   0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13, 14, 4, 15, 16, 4, 0, 0, 0, 15,
1948   16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4, 0, 0, 0, 15, 16, 4
1949 };
1950 
1951 static size_t ScoreTqReqTimeoutPriorityInherit_Scope(
1952   void  *arg,
1953   char  *buf,
1954   size_t n
1955 )
1956 {
1957   ScoreTqReqTimeoutPriorityInherit_Context *ctx;
1958 
1959   ctx = arg;
1960 
1961   if ( ctx->Map.in_action_loop ) {
1962     return T_get_scope(
1963       ScoreTqReqTimeoutPriorityInherit_PreDesc,
1964       buf,
1965       n,
1966       ctx->Map.pcs
1967     );
1968   }
1969 
1970   return 0;
1971 }
1972 
1973 static T_fixture ScoreTqReqTimeoutPriorityInherit_Fixture = {
1974   .setup = ScoreTqReqTimeoutPriorityInherit_Setup_Wrap,
1975   .stop = NULL,
1976   .teardown = ScoreTqReqTimeoutPriorityInherit_Teardown_Wrap,
1977   .scope = ScoreTqReqTimeoutPriorityInherit_Scope,
1978   .initial_context = &ScoreTqReqTimeoutPriorityInherit_Instance
1979 };
1980 
1981 static inline ScoreTqReqTimeoutPriorityInherit_Entry
1982 ScoreTqReqTimeoutPriorityInherit_PopEntry(
1983   ScoreTqReqTimeoutPriorityInherit_Context *ctx
1984 )
1985 {
1986   size_t index;
1987 
1988   index = ctx->Map.index;
1989   ctx->Map.index = index + 1;
1990   return ScoreTqReqTimeoutPriorityInherit_Entries[
1991     ScoreTqReqTimeoutPriorityInherit_Map[ index ]
1992   ];
1993 }
1994 
1995 static void ScoreTqReqTimeoutPriorityInherit_SetPreConditionStates(
1996   ScoreTqReqTimeoutPriorityInherit_Context *ctx
1997 )
1998 {
1999   ctx->Map.pcs[ 0 ] = ctx->Map.pci[ 0 ];
2000   ctx->Map.pcs[ 1 ] = ctx->Map.pci[ 1 ];
2001   ctx->Map.pcs[ 2 ] = ctx->Map.pci[ 2 ];
2002   ctx->Map.pcs[ 3 ] = ctx->Map.pci[ 3 ];
2003   ctx->Map.pcs[ 4 ] = ctx->Map.pci[ 4 ];
2004 
2005   if ( ctx->Map.entry.Pre_OwnerQueue_NA ) {
2006     ctx->Map.pcs[ 5 ] = ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_NA;
2007   } else {
2008     ctx->Map.pcs[ 5 ] = ctx->Map.pci[ 5 ];
2009   }
2010 
2011   if ( ctx->Map.entry.Pre_OwnerOwnerPriority_NA ) {
2012     ctx->Map.pcs[ 6 ] = ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_NA;
2013   } else {
2014     ctx->Map.pcs[ 6 ] = ctx->Map.pci[ 6 ];
2015   }
2016 
2017   ctx->Map.pcs[ 7 ] = ctx->Map.pci[ 7 ];
2018 }
2019 
2020 static void ScoreTqReqTimeoutPriorityInherit_TestVariant(
2021   ScoreTqReqTimeoutPriorityInherit_Context *ctx
2022 )
2023 {
2024   ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Prepare(
2025     ctx,
2026     ctx->Map.pcs[ 0 ]
2027   );
2028   ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_Prepare(
2029     ctx,
2030     ctx->Map.pcs[ 1 ]
2031   );
2032   ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Prepare( ctx, ctx->Map.pcs[ 2 ] );
2033   ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_Prepare(
2034     ctx,
2035     ctx->Map.pcs[ 3 ]
2036   );
2037   ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_Prepare(
2038     ctx,
2039     ctx->Map.pcs[ 4 ]
2040   );
2041   ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_Prepare(
2042     ctx,
2043     ctx->Map.pcs[ 5 ]
2044   );
2045   ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_Prepare(
2046     ctx,
2047     ctx->Map.pcs[ 6 ]
2048   );
2049   ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_Prepare(
2050     ctx,
2051     ctx->Map.pcs[ 7 ]
2052   );
2053   ScoreTqReqTimeoutPriorityInherit_Action( ctx );
2054   ScoreTqReqTimeoutPriorityInherit_Post_Status_Check(
2055     ctx,
2056     ctx->Map.entry.Post_Status
2057   );
2058   ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Check(
2059     ctx,
2060     ctx->Map.entry.Post_Unblock
2061   );
2062   ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Check(
2063     ctx,
2064     ctx->Map.entry.Post_OwnerPriority
2065   );
2066   ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Check(
2067     ctx,
2068     ctx->Map.entry.Post_OwnerOwnerPriority
2069   );
2070 }
2071 
2072 static T_fixture_node ScoreTqReqTimeoutPriorityInherit_Node;
2073 
2074 static T_remark ScoreTqReqTimeoutPriorityInherit_Remark = {
2075   .next = NULL,
2076   .remark = "ScoreTqReqTimeoutPriorityInherit"
2077 };
2078 
2079 void ScoreTqReqTimeoutPriorityInherit_Run( TQContext *tq_ctx )
2080 {
2081   ScoreTqReqTimeoutPriorityInherit_Context *ctx;
2082 
2083   ctx = &ScoreTqReqTimeoutPriorityInherit_Instance;
2084   ctx->tq_ctx = tq_ctx;
2085 
2086   ctx = T_push_fixture(
2087     &ScoreTqReqTimeoutPriorityInherit_Node,
2088     &ScoreTqReqTimeoutPriorityInherit_Fixture
2089   );
2090   ctx->Map.in_action_loop = true;
2091   ctx->Map.index = 0;
2092 
2093   for (
2094     ctx->Map.pci[ 0 ] = ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Home;
2095     ctx->Map.pci[ 0 ] < ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_NA;
2096     ++ctx->Map.pci[ 0 ]
2097   ) {
2098     for (
2099       ctx->Map.pci[ 1 ] = ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_One;
2100       ctx->Map.pci[ 1 ] < ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_NA;
2101       ++ctx->Map.pci[ 1 ]
2102     ) {
2103       for (
2104         ctx->Map.pci[ 2 ] = ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Only;
2105         ctx->Map.pci[ 2 ] < ScoreTqReqTimeoutPriorityInherit_Pre_Queue_NA;
2106         ++ctx->Map.pci[ 2 ]
2107       ) {
2108         for (
2109           ctx->Map.pci[ 3 ] = ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_Only;
2110           ctx->Map.pci[ 3 ] < ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_NA;
2111           ++ctx->Map.pci[ 3 ]
2112         ) {
2113           for (
2114             ctx->Map.pci[ 4 ] = ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_NotEnqueued;
2115             ctx->Map.pci[ 4 ] < ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_NA;
2116             ++ctx->Map.pci[ 4 ]
2117           ) {
2118             for (
2119               ctx->Map.pci[ 5 ] = ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_Only;
2120               ctx->Map.pci[ 5 ] < ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_NA;
2121               ++ctx->Map.pci[ 5 ]
2122             ) {
2123               for (
2124                 ctx->Map.pci[ 6 ] = ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_Only;
2125                 ctx->Map.pci[ 6 ] < ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_NA;
2126                 ++ctx->Map.pci[ 6 ]
2127               ) {
2128                 for (
2129                   ctx->Map.pci[ 7 ] = ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_Blocked;
2130                   ctx->Map.pci[ 7 ] < ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_NA;
2131                   ++ctx->Map.pci[ 7 ]
2132                 ) {
2133                   ctx->Map.entry = ScoreTqReqTimeoutPriorityInherit_PopEntry(
2134                     ctx
2135                   );
2136 
2137                   if ( ctx->Map.entry.Skip ) {
2138                     continue;
2139                   }
2140 
2141                   ScoreTqReqTimeoutPriorityInherit_SetPreConditionStates(
2142                     ctx
2143                   );
2144                   ScoreTqReqTimeoutPriorityInherit_Prepare( ctx );
2145                   ScoreTqReqTimeoutPriorityInherit_TestVariant( ctx );
2146                   ScoreTqReqTimeoutPriorityInherit_Cleanup( ctx );
2147                 }
2148               }
2149             }
2150           }
2151         }
2152       }
2153     }
2154   }
2155 
2156   T_add_remark( &ScoreTqReqTimeoutPriorityInherit_Remark );
2157   T_pop_fixture();
2158 }
2159 
2160 /** @} */