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 ScoreTqReqEnqueuePriorityInherit
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 "tr-tq-enqueue-priority-inherit.h"
0056 
0057 #include <rtems/test.h>
0058 
0059 /**
0060  * @defgroup ScoreTqReqEnqueuePriorityInherit \
0061  *   spec:/score/tq/req/enqueue-priority-inherit
0062  *
0063  * @ingroup TestsuitesValidationNoClock0
0064  *
0065  * @{
0066  */
0067 
0068 typedef struct {
0069   uint32_t Skip : 1;
0070   uint32_t Pre_Scheduler_NA : 1;
0071   uint32_t Pre_QueueEligible_NA : 1;
0072   uint32_t Pre_QueueIneligible_NA : 1;
0073   uint32_t Pre_PriorityForOwner_NA : 1;
0074   uint32_t Pre_SchedulerForOwner_NA : 1;
0075   uint32_t Pre_OwnerState_NA : 1;
0076   uint32_t Post_Position : 4;
0077   uint32_t Post_OwnerPriority : 2;
0078   uint32_t Post_OwnerScheduler : 2;
0079   uint32_t Post_OwnerOwnerPriority : 2;
0080   uint32_t Post_OwnerOwnerScheduler : 2;
0081 } ScoreTqReqEnqueuePriorityInherit_Entry;
0082 
0083 /**
0084  * @brief Test context for spec:/score/tq/req/enqueue-priority-inherit test
0085  *   case.
0086  */
0087 typedef struct {
0088   /**
0089    * @brief This member specifies the priority of a thread on the thread queue
0090    *   with an eligible scheduler equal to an eligible scheduler of the
0091    *   enqueueing thread.
0092    */
0093   rtems_task_priority queue_priority;
0094 
0095   /**
0096    * @brief If this member is true, then a thread those eligible schedulers are
0097    *   ineligible scheduler to the enqueueing task should be enqueued before a
0098    *   thread with an eligible scheduler equal to an eligible scheduler of the
0099    *   enqueueing thread.
0100    */
0101   size_t other_before;
0102 
0103   /**
0104    * @brief If this member is true, then a thread those eligible schedulers are
0105    *   ineligible scheduler to the enqueueing task should be enqueued after a
0106    *   thread with an eligible scheduler equal to an eligible scheduler of the
0107    *   enqueueing thread.
0108    */
0109   size_t other_after;
0110 
0111   /**
0112    * @brief This this member is true, then the priorities of the enqueueing
0113    *   thread shall be dispensable for the owner of the thread queue.
0114    */
0115   bool vital_priority;
0116 
0117   /**
0118    * @brief This this member is true, then the eligible scheduler of the
0119    *   enqueueing thread shall be dispensable for the owner of the thread
0120    *   queue.
0121    */
0122   bool vital_scheduler;
0123 
0124   /**
0125    * @brief This member contains the priorities of the thread queue owner after
0126    *   the enqueue.
0127    */
0128   rtems_task_priority owner_priority[ 4 ];
0129 
0130   /**
0131    * @brief This member contains the priorities of the owner of the thread
0132    *   queue on which the thread queue owner is blocked after the enqueue.
0133    */
0134   rtems_task_priority owner_owner_priority[ 4 ];
0135 
0136   /**
0137    * @brief This member specifies which mutex obtain event shall be used to
0138    *   block the thread queue owner.
0139    */
0140   rtems_event_set owner_obtain;
0141 
0142   /**
0143    * @brief This member specifies which mutex release event shall be used to
0144    *   unblock the thread queue owner.
0145    */
0146   rtems_event_set owner_release;
0147 
0148   /**
0149    * @brief This member contains a copy of the corresponding
0150    *   ScoreTqReqEnqueuePriorityInherit_Run() parameter.
0151    */
0152   TQContext *tq_ctx;
0153 
0154   struct {
0155     /**
0156      * @brief This member defines the pre-condition states for the next action.
0157      */
0158     size_t pcs[ 6 ];
0159 
0160     /**
0161      * @brief If this member is true, then the test action loop is executed.
0162      */
0163     bool in_action_loop;
0164 
0165     /**
0166      * @brief This member contains the next transition map index.
0167      */
0168     size_t index;
0169 
0170     /**
0171      * @brief This member contains the current transition map entry.
0172      */
0173     ScoreTqReqEnqueuePriorityInherit_Entry entry;
0174 
0175     /**
0176      * @brief If this member is true, then the current transition variant
0177      *   should be skipped.
0178      */
0179     bool skip;
0180   } Map;
0181 } ScoreTqReqEnqueuePriorityInherit_Context;
0182 
0183 static ScoreTqReqEnqueuePriorityInherit_Context
0184   ScoreTqReqEnqueuePriorityInherit_Instance;
0185 
0186 static const char * const ScoreTqReqEnqueuePriorityInherit_PreDesc_Scheduler[] = {
0187   "One",
0188   "Two",
0189   "Three",
0190   "More",
0191   "NA"
0192 };
0193 
0194 static const char * const ScoreTqReqEnqueuePriorityInherit_PreDesc_QueueEligible[] = {
0195   "None",
0196   "High",
0197   "Equal",
0198   "Low",
0199   "NA"
0200 };
0201 
0202 static const char * const ScoreTqReqEnqueuePriorityInherit_PreDesc_QueueIneligible[] = {
0203   "None",
0204   "Only",
0205   "Before",
0206   "After",
0207   "NA"
0208 };
0209 
0210 static const char * const ScoreTqReqEnqueuePriorityInherit_PreDesc_PriorityForOwner[] = {
0211   "Vital",
0212   "Dispensable",
0213   "NA"
0214 };
0215 
0216 static const char * const ScoreTqReqEnqueuePriorityInherit_PreDesc_SchedulerForOwner[] = {
0217   "Vital",
0218   "Dispensable",
0219   "NA"
0220 };
0221 
0222 static const char * const ScoreTqReqEnqueuePriorityInherit_PreDesc_OwnerState[] = {
0223   "NotEnqueued",
0224   "FIFO",
0225   "Priority",
0226   "PriorityInherit",
0227   "NA"
0228 };
0229 
0230 static const char * const * const ScoreTqReqEnqueuePriorityInherit_PreDesc[] = {
0231   ScoreTqReqEnqueuePriorityInherit_PreDesc_Scheduler,
0232   ScoreTqReqEnqueuePriorityInherit_PreDesc_QueueEligible,
0233   ScoreTqReqEnqueuePriorityInherit_PreDesc_QueueIneligible,
0234   ScoreTqReqEnqueuePriorityInherit_PreDesc_PriorityForOwner,
0235   ScoreTqReqEnqueuePriorityInherit_PreDesc_SchedulerForOwner,
0236   ScoreTqReqEnqueuePriorityInherit_PreDesc_OwnerState,
0237   NULL
0238 };
0239 
0240 typedef ScoreTqReqEnqueuePriorityInherit_Context Context;
0241 
0242 static const rtems_tcb *GetUnblock( Context *ctx, size_t *index )
0243 {
0244   const rtems_tcb *thread;
0245 
0246   do {
0247     thread = TQGetNextUnblock( ctx->tq_ctx, index )->thread;
0248   } while ( thread == ctx->tq_ctx->runner_tcb );
0249 
0250   return thread;
0251 }
0252 
0253 static const rtems_tcb *GetTCB( Context *ctx, TQWorkerKind worker )
0254 {
0255   return ctx->tq_ctx->worker_tcb[ worker ];
0256 }
0257 
0258 static void CheckPriorityRaise(
0259   const Context             *ctx,
0260   const rtems_task_priority *priority
0261 )
0262 {
0263   if ( ctx->queue_priority == PRIO_ULTRA_HIGH ) {
0264     T_eq_u32( priority[ 0 ], PRIO_ULTRA_HIGH );
0265   } else {
0266     T_eq_u32( priority[ 0 ], PRIO_VERY_HIGH );
0267   }
0268 
0269   if (
0270     ctx->queue_priority == PRIO_VERY_HIGH ||
0271     ctx->queue_priority == PRIO_ULTRA_HIGH
0272   ) {
0273     if ( ctx->other_before || ctx->other_after ) {
0274       T_eq_u32( priority[ 1 ], PRIO_ULTRA_LOW );
0275       T_eq_u32( priority[ 2 ], PRIO_NORMAL );
0276     } else {
0277       T_eq_u32( priority[ 1 ], PRIO_NORMAL );
0278     }
0279   }
0280 }
0281 
0282 static void CheckPriorityNop(
0283   const Context             *ctx,
0284   const rtems_task_priority *priority
0285 )
0286 {
0287   if ( ctx->queue_priority == PRIO_ULTRA_HIGH ) {
0288     T_eq_u32( priority[ 0 ], PRIO_ULTRA_HIGH );
0289   } else {
0290     T_eq_u32( priority[ 0 ], PRIO_VERY_HIGH );
0291   }
0292 }
0293 
0294 static void CheckSchedulerNewHelper(
0295   const Context             *ctx,
0296   const rtems_task_priority *priority
0297 )
0298 {
0299   if (
0300     ctx->vital_priority &&
0301     ( ctx->queue_priority == PRIO_VERY_HIGH ||
0302       ctx->queue_priority == PRIO_ULTRA_HIGH )
0303   ) {
0304     if ( ctx->other_before || ctx->other_after ) {
0305       T_eq_u32( priority[ 3 ], PRIO_VERY_LOW );
0306     } else {
0307       T_eq_u32( priority[ 2 ], PRIO_VERY_LOW );
0308       T_eq_u32( priority[ 3 ], PRIO_INVALID );
0309     }
0310   } else {
0311     if ( ctx->other_before || ctx->other_after ) {
0312       T_eq_u32( priority[ 1 ], PRIO_ULTRA_LOW );
0313       T_eq_u32( priority[ 2 ], PRIO_VERY_LOW );
0314     } else {
0315       T_eq_u32( priority[ 1 ], PRIO_VERY_LOW );
0316       T_eq_u32( priority[ 2 ], PRIO_INVALID );
0317     }
0318 
0319      T_eq_u32( priority[ 3 ], PRIO_INVALID );
0320   }
0321 }
0322 
0323 static void CheckSchedulerNop(
0324   const Context             *ctx,
0325   const rtems_task_priority *priority
0326 )
0327 {
0328   if (
0329     ctx->vital_priority &&
0330     ( ctx->queue_priority == PRIO_VERY_HIGH ||
0331       ctx->queue_priority == PRIO_ULTRA_HIGH )
0332   ) {
0333     if ( !ctx->other_before && !ctx->other_after ) {
0334       T_eq_u32( priority[ 2 ], PRIO_INVALID );
0335     }
0336 
0337     T_eq_u32( priority[ 3 ], PRIO_INVALID );
0338   } else {
0339     if ( ctx->other_before || ctx->other_after ) {
0340       T_eq_u32( priority[ 1 ], PRIO_ULTRA_LOW );
0341     } else {
0342       T_eq_u32( priority[ 1 ], PRIO_INVALID );
0343     }
0344 
0345     T_eq_u32( priority[ 2 ], PRIO_INVALID );
0346     T_eq_u32( priority[ 3 ], PRIO_INVALID );
0347   }
0348 }
0349 
0350 static void GetPriorities(
0351   const Context       *ctx,
0352   TQWorkerKind         worker,
0353   rtems_task_priority *priority
0354 )
0355 {
0356   priority[ 0 ] = GetPriorityByScheduler(
0357     ctx->tq_ctx->worker_id[ worker ],
0358     SCHEDULER_A_ID
0359   );
0360   priority[ 1 ] = GetPriorityByScheduler(
0361     ctx->tq_ctx->worker_id[ worker ],
0362     SCHEDULER_B_ID
0363   );
0364   priority[ 2 ] = GetPriorityByScheduler(
0365     ctx->tq_ctx->worker_id[ worker ],
0366     SCHEDULER_C_ID
0367   );
0368   priority[ 3 ] = GetPriorityByScheduler(
0369     ctx->tq_ctx->worker_id[ worker ],
0370     SCHEDULER_D_ID
0371   );
0372 }
0373 
0374 static void AddVitalPriority( Context *ctx, rtems_id scheduler_id )
0375 {
0376   TQSetScheduler( ctx->tq_ctx, TQ_BLOCKER_D, scheduler_id, PRIO_NORMAL );
0377   TQSendAndWaitForExecutionStop(
0378     ctx->tq_ctx,
0379     TQ_BLOCKER_D,
0380     TQ_EVENT_MUTEX_A_OBTAIN | TQ_EVENT_MUTEX_A_RELEASE
0381   );
0382 }
0383 
0384 static void AddVitalPriorityHelper( Context *ctx, rtems_id scheduler_id )
0385 {
0386   TQSetScheduler( ctx->tq_ctx, TQ_HELPER_B, scheduler_id, PRIO_LOW );
0387   TQSendAndWaitForExecutionStop(
0388     ctx->tq_ctx,
0389     TQ_HELPER_B,
0390     TQ_EVENT_MUTEX_B_OBTAIN | TQ_EVENT_MUTEX_B_RELEASE
0391   );
0392 }
0393 
0394 static void AddVitalScheduler( Context *ctx, rtems_id scheduler_id )
0395 {
0396   TQSetScheduler( ctx->tq_ctx, TQ_BLOCKER_E, scheduler_id, PRIO_VERY_LOW );
0397   TQSendAndWaitForExecutionStop(
0398     ctx->tq_ctx,
0399     TQ_BLOCKER_E,
0400     TQ_EVENT_MUTEX_A_OBTAIN | TQ_EVENT_MUTEX_A_RELEASE
0401   );
0402 }
0403 
0404 static void ScoreTqReqEnqueuePriorityInherit_Pre_Scheduler_Prepare(
0405   ScoreTqReqEnqueuePriorityInherit_Context      *ctx,
0406   ScoreTqReqEnqueuePriorityInherit_Pre_Scheduler state
0407 )
0408 {
0409   switch ( state ) {
0410     case ScoreTqReqEnqueuePriorityInherit_Pre_Scheduler_One: {
0411       /*
0412        * Where the system has exactly one schedulers.
0413        */
0414       if ( rtems_scheduler_get_processor_maximum() != 1 ) {
0415         ctx->Map.skip = true;
0416       }
0417       break;
0418     }
0419 
0420     case ScoreTqReqEnqueuePriorityInherit_Pre_Scheduler_Two: {
0421       /*
0422        * Where the system has exactly two schedulers.
0423        */
0424       if ( rtems_scheduler_get_processor_maximum() != 2 ) {
0425         ctx->Map.skip = true;
0426       }
0427       break;
0428     }
0429 
0430     case ScoreTqReqEnqueuePriorityInherit_Pre_Scheduler_Three: {
0431       /*
0432        * Where the system has exactly three schedulers.
0433        */
0434       if ( rtems_scheduler_get_processor_maximum() != 3 ) {
0435         ctx->Map.skip = true;
0436       }
0437       break;
0438     }
0439 
0440     case ScoreTqReqEnqueuePriorityInherit_Pre_Scheduler_More: {
0441       /*
0442        * Where the system has at least three schedulers.
0443        */
0444       if ( rtems_scheduler_get_processor_maximum() < 4 ) {
0445         ctx->Map.skip = true;
0446       }
0447       break;
0448     }
0449 
0450     case ScoreTqReqEnqueuePriorityInherit_Pre_Scheduler_NA:
0451       break;
0452   }
0453 }
0454 
0455 static void ScoreTqReqEnqueuePriorityInherit_Pre_QueueEligible_Prepare(
0456   ScoreTqReqEnqueuePriorityInherit_Context          *ctx,
0457   ScoreTqReqEnqueuePriorityInherit_Pre_QueueEligible state
0458 )
0459 {
0460   switch ( state ) {
0461     case ScoreTqReqEnqueuePriorityInherit_Pre_QueueEligible_None: {
0462       /*
0463        * While all priority queues of the thread queue associated with eligible
0464        * schedulers of the enqueueing thread are empty.
0465        */
0466       ctx->queue_priority = PRIO_INVALID;
0467       break;
0468     }
0469 
0470     case ScoreTqReqEnqueuePriorityInherit_Pre_QueueEligible_High: {
0471       /*
0472        * While a priority queue of the thread queue associated with an eligible
0473        * scheduler of the enqueueing thread is non-empty, while the highest
0474        * priority of the priority queue is higher than the priority of the
0475        * enqueueing thread with respect to the eligible scheduler.
0476        */
0477       ++ctx->tq_ctx->how_many;
0478       ctx->queue_priority = PRIO_ULTRA_HIGH;
0479       break;
0480     }
0481 
0482     case ScoreTqReqEnqueuePriorityInherit_Pre_QueueEligible_Equal: {
0483       /*
0484        * While a priority queue of the thread queue associated with an eligible
0485        * scheduler of the enqueueing thread is non-empty, while the highest
0486        * priority of the priority queue is equal to the priority of the
0487        * enqueueing thread with respect to the eligible scheduler.
0488        */
0489       ++ctx->tq_ctx->how_many;
0490       ctx->queue_priority = PRIO_VERY_HIGH;
0491       break;
0492     }
0493 
0494     case ScoreTqReqEnqueuePriorityInherit_Pre_QueueEligible_Low: {
0495       /*
0496        * While a priority queue of the thread queue associated with an eligible
0497        * scheduler of the enqueueing thread is non-empty, while the highest
0498        * priority of the priority queue is lower than the priority of the
0499        * enqueueing thread with respect to the eligible scheduler.
0500        */
0501       ++ctx->tq_ctx->how_many;
0502       ctx->queue_priority = PRIO_HIGH;
0503       break;
0504     }
0505 
0506     case ScoreTqReqEnqueuePriorityInherit_Pre_QueueEligible_NA:
0507       break;
0508   }
0509 }
0510 
0511 static void ScoreTqReqEnqueuePriorityInherit_Pre_QueueIneligible_Prepare(
0512   ScoreTqReqEnqueuePriorityInherit_Context            *ctx,
0513   ScoreTqReqEnqueuePriorityInherit_Pre_QueueIneligible state
0514 )
0515 {
0516   switch ( state ) {
0517     case ScoreTqReqEnqueuePriorityInherit_Pre_QueueIneligible_None: {
0518       /*
0519        * While each priority queue of the thread queue is associated with an
0520        * eligible scheduler of the enqueueing thread.
0521        */
0522       ctx->other_before = false;
0523       ctx->other_after = false;
0524       break;
0525     }
0526 
0527     case ScoreTqReqEnqueuePriorityInherit_Pre_QueueIneligible_Only: {
0528       /*
0529        * While exactly one priority queue of the thread queue exists which is
0530        * not associated with an eligible scheduler of the enqueueing thread.
0531        */
0532       ++ctx->tq_ctx->how_many;
0533       ctx->other_before = true;
0534       ctx->other_after = false;
0535       break;
0536     }
0537 
0538     case ScoreTqReqEnqueuePriorityInherit_Pre_QueueIneligible_Before: {
0539       /*
0540        * While a priority queue of the thread queue exists which is not
0541        * associated with an eligible scheduler of the enqueueing thread, while
0542        * the priority queue is positioned before all priority queues which are
0543        * associated with eligible schedulers of the enqueueing thread.
0544        */
0545       ++ctx->tq_ctx->how_many;
0546       ctx->other_before = true;
0547       ctx->other_after = false;
0548       break;
0549     }
0550 
0551     case ScoreTqReqEnqueuePriorityInherit_Pre_QueueIneligible_After: {
0552       /*
0553        * While a priority queue of the thread queue exists which is not
0554        * associated with an eligible scheduler of the enqueueing thread, while
0555        * the priority queue is positioned after all priority queues which are
0556        * associated with eligible schedulers of the enqueueing thread.
0557        */
0558       ++ctx->tq_ctx->how_many;
0559       ctx->other_before = false;
0560       ctx->other_after = true;
0561       break;
0562     }
0563 
0564     case ScoreTqReqEnqueuePriorityInherit_Pre_QueueIneligible_NA:
0565       break;
0566   }
0567 }
0568 
0569 static void ScoreTqReqEnqueuePriorityInherit_Pre_PriorityForOwner_Prepare(
0570   ScoreTqReqEnqueuePriorityInherit_Context             *ctx,
0571   ScoreTqReqEnqueuePriorityInherit_Pre_PriorityForOwner state
0572 )
0573 {
0574   switch ( state ) {
0575     case ScoreTqReqEnqueuePriorityInherit_Pre_PriorityForOwner_Vital: {
0576       /*
0577        * While at least one priority of the enqueueing thread is higher than
0578        * the highest priority of the owner of the thread queue.
0579        */
0580       ctx->vital_priority = true;
0581       break;
0582     }
0583 
0584     case ScoreTqReqEnqueuePriorityInherit_Pre_PriorityForOwner_Dispensable: {
0585       /*
0586        * While all priorities of the enqueueing thread are lower than or equal
0587        * to the highest priority of the owner of the thread queue.
0588        */
0589       ctx->vital_priority = false;
0590       break;
0591     }
0592 
0593     case ScoreTqReqEnqueuePriorityInherit_Pre_PriorityForOwner_NA:
0594       break;
0595   }
0596 }
0597 
0598 static void ScoreTqReqEnqueuePriorityInherit_Pre_SchedulerForOwner_Prepare(
0599   ScoreTqReqEnqueuePriorityInherit_Context              *ctx,
0600   ScoreTqReqEnqueuePriorityInherit_Pre_SchedulerForOwner state
0601 )
0602 {
0603   switch ( state ) {
0604     case ScoreTqReqEnqueuePriorityInherit_Pre_SchedulerForOwner_Vital: {
0605       /*
0606        * While at least one eligible scheduler of the enqueueing thread is not
0607        * an eligible scheduler of the owner of the thread queue.
0608        */
0609       ctx->vital_scheduler = true;
0610       break;
0611     }
0612 
0613     case ScoreTqReqEnqueuePriorityInherit_Pre_SchedulerForOwner_Dispensable: {
0614       /*
0615        * While all eligible schedulers of the enqueueing thread are an eligible
0616        * scheduler of the owner of the thread queue.
0617        */
0618       ctx->vital_scheduler = false;
0619       break;
0620     }
0621 
0622     case ScoreTqReqEnqueuePriorityInherit_Pre_SchedulerForOwner_NA:
0623       break;
0624   }
0625 }
0626 
0627 static void ScoreTqReqEnqueuePriorityInherit_Pre_OwnerState_Prepare(
0628   ScoreTqReqEnqueuePriorityInherit_Context       *ctx,
0629   ScoreTqReqEnqueuePriorityInherit_Pre_OwnerState state
0630 )
0631 {
0632   switch ( state ) {
0633     case ScoreTqReqEnqueuePriorityInherit_Pre_OwnerState_NotEnqueued: {
0634       /*
0635        * While the owner of the thread queue is not enqueued on a thread queue.
0636        */
0637       ctx->owner_obtain = 0;
0638       ctx->owner_release = 0;
0639       break;
0640     }
0641 
0642     case ScoreTqReqEnqueuePriorityInherit_Pre_OwnerState_FIFO: {
0643       /*
0644        * While the owner of the thread queue is enqueued on a thread queue in
0645        * FIFO order.
0646        */
0647       ctx->owner_obtain = TQ_EVENT_MUTEX_FIFO_OBTAIN;
0648       ctx->owner_release = TQ_EVENT_MUTEX_FIFO_RELEASE;
0649       break;
0650     }
0651 
0652     case ScoreTqReqEnqueuePriorityInherit_Pre_OwnerState_Priority: {
0653       /*
0654        * While the owner of the thread queue is enqueued on a thread queue in
0655        * priority order.
0656        */
0657       ctx->owner_obtain = TQ_EVENT_MUTEX_NO_PROTOCOL_OBTAIN;
0658       ctx->owner_release = TQ_EVENT_MUTEX_NO_PROTOCOL_RELEASE;
0659       break;
0660     }
0661 
0662     case ScoreTqReqEnqueuePriorityInherit_Pre_OwnerState_PriorityInherit: {
0663       /*
0664        * While the owner of the thread queue is enqueued on a thread queue in
0665        * priority order with priority inheritance.
0666        */
0667       ctx->owner_obtain = TQ_EVENT_MUTEX_C_OBTAIN;
0668       ctx->owner_release = TQ_EVENT_MUTEX_C_RELEASE;
0669       break;
0670     }
0671 
0672     case ScoreTqReqEnqueuePriorityInherit_Pre_OwnerState_NA:
0673       break;
0674   }
0675 }
0676 
0677 static void ScoreTqReqEnqueuePriorityInherit_Post_Position_Check(
0678   ScoreTqReqEnqueuePriorityInherit_Context      *ctx,
0679   ScoreTqReqEnqueuePriorityInherit_Post_Position state
0680 )
0681 {
0682   size_t i;
0683 
0684   i = 0;
0685 
0686   /* Event receive */
0687   T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_HELPER_A ) );
0688 
0689   switch ( state ) {
0690     case ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialFirst: {
0691       /*
0692        * A priority queue associated with the scheduler which contains exactly
0693        * the enqueueing thread shall be created as the first priority queue of
0694        * the thread queue.
0695        */
0696       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_A ) );
0697       T_eq_ptr( GetUnblock( ctx, &i ), NULL );
0698       break;
0699     }
0700 
0701     case ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialLast: {
0702       /*
0703        * A priority queue associated with the scheduler which contains exactly
0704        * the enqueueing thread shall be created as the last priority queue of
0705        * the thread queue.
0706        */
0707       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_C ) );
0708       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_A ) );
0709       T_eq_ptr( GetUnblock( ctx, &i ), NULL );
0710       break;
0711     }
0712 
0713     case ScoreTqReqEnqueuePriorityInherit_Post_Position_First: {
0714       /*
0715        * The enqueueing thread shall be enqueued in the priority queue
0716        * associated with the scheduler.
0717        */
0718       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_A ) );
0719       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_B ) );
0720       T_eq_ptr( GetUnblock( ctx, &i ), NULL );
0721       break;
0722     }
0723 
0724     case ScoreTqReqEnqueuePriorityInherit_Post_Position_Second: {
0725       /*
0726        * The enqueueing thread shall be enqueued in the priority queue
0727        * associated with the scheduler.
0728        */
0729       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_B ) );
0730       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_A ) );
0731       T_eq_ptr( GetUnblock( ctx, &i ), NULL );
0732       break;
0733     }
0734 
0735     case ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstFirst: {
0736       /*
0737        * The enqueueing thread shall be enqueued in the priority queue
0738        * associated with the scheduler.
0739        *
0740        * The position of the priority queue in the thread queue shall not
0741        * change.
0742        */
0743       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_A ) );
0744       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_C ) );
0745       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_B ) );
0746       T_eq_ptr( GetUnblock( ctx, &i ), NULL );
0747       break;
0748     }
0749 
0750     case ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondFirst: {
0751       /*
0752        * The enqueueing thread shall be enqueued in the priority queue
0753        * associated with the scheduler.
0754        *
0755        * The position of the priority queue in the thread queue shall not
0756        * change.
0757        */
0758       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_B ) );
0759       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_C ) );
0760       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_A ) );
0761       T_eq_ptr( GetUnblock( ctx, &i ), NULL );
0762       break;
0763     }
0764 
0765     case ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstLast: {
0766       /*
0767        * The enqueueing thread shall be enqueued in the priority queue
0768        * associated with the scheduler.
0769        *
0770        * The position of the priority queue in the thread queue shall not
0771        * change.
0772        */
0773       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_C ) );
0774       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_A ) );
0775       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_B ) );
0776       T_eq_ptr( GetUnblock( ctx, &i ), NULL );
0777       break;
0778     }
0779 
0780     case ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondLast: {
0781       /*
0782        * The enqueueing thread shall be enqueued in the priority queue
0783        * associated with the scheduler.
0784        *
0785        * The position of the priority queue in the thread queue shall not
0786        * change.
0787        */
0788       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_C ) );
0789       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_B ) );
0790       T_eq_ptr( GetUnblock( ctx, &i ), GetTCB( ctx, TQ_BLOCKER_A ) );
0791       T_eq_ptr( GetUnblock( ctx, &i ), NULL );
0792       break;
0793     }
0794 
0795     case ScoreTqReqEnqueuePriorityInherit_Post_Position_NA:
0796       break;
0797   }
0798 }
0799 
0800 static void ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Check(
0801   ScoreTqReqEnqueuePriorityInherit_Context           *ctx,
0802   ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority state
0803 )
0804 {
0805   switch ( state ) {
0806     case ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise: {
0807       /*
0808        * Each priority of the enqueueing thread which is higher than the
0809        * highest priority of the owner of the thread queue shall be made the
0810        * highest priority of the owner.
0811        */
0812       CheckPriorityRaise( ctx, ctx->owner_priority );
0813       break;
0814     }
0815 
0816     case ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop: {
0817       /*
0818        * The priorities of the owner of the thread queue shall not change.
0819        */
0820       CheckPriorityNop( ctx, ctx->owner_priority );
0821       break;
0822     }
0823 
0824     case ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_NA:
0825       break;
0826   }
0827 }
0828 
0829 static void ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Check(
0830   ScoreTqReqEnqueuePriorityInherit_Context            *ctx,
0831   ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler state
0832 )
0833 {
0834   switch ( state ) {
0835     case ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper: {
0836       /*
0837        * Each eligible scheduler of the enqueueing thread which is not an
0838        * eligible scheduler of the owner of the thread queue shall be made a
0839        * helping scheduler of the owner with the priority of the enqueueing
0840        * thread.
0841        */
0842       CheckSchedulerNewHelper( ctx, ctx->owner_priority );
0843       break;
0844     }
0845 
0846     case ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop: {
0847       /*
0848        * The set of eligible schedulers of the owner of the thread queue shall
0849        * not change.
0850        */
0851       CheckSchedulerNop( ctx, ctx->owner_priority );
0852       break;
0853     }
0854 
0855     case ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NA:
0856       break;
0857   }
0858 }
0859 
0860 static void ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Check(
0861   ScoreTqReqEnqueuePriorityInherit_Context                *ctx,
0862   ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority state
0863 )
0864 {
0865   switch ( state ) {
0866     case ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise: {
0867       /*
0868        * Each priority of the enqueueing thread which is higher than the
0869        * highest priority of the owner of the thread queue on which the owner
0870        * of the thread queue is enqueued shall be made the highest priority of
0871        * the owner.
0872        */
0873       CheckPriorityRaise( ctx, ctx->owner_owner_priority );
0874       break;
0875     }
0876 
0877     case ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop: {
0878       /*
0879        * The priorities of the owner of the thread queue on which the owner of
0880        * the thread queue is enqueued shall not change.
0881        */
0882       if ( ctx->owner_obtain == TQ_EVENT_MUTEX_C_OBTAIN ) {
0883         CheckPriorityNop( ctx, ctx->owner_owner_priority );
0884       } else {
0885         if ( ctx->vital_priority ) {
0886           T_eq_u32( ctx->owner_owner_priority[ 0 ], PRIO_HIGH );
0887         } else {
0888           T_eq_u32( ctx->owner_owner_priority[ 0 ], PRIO_VERY_HIGH );
0889         }
0890       }
0891       break;
0892     }
0893 
0894     case ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_NA:
0895       break;
0896   }
0897 }
0898 
0899 static void ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Check(
0900   ScoreTqReqEnqueuePriorityInherit_Context                 *ctx,
0901   ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler state
0902 )
0903 {
0904   switch ( state ) {
0905     case ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper: {
0906       /*
0907        * Each eligible scheduler of the enqueueing thread which is not an
0908        * eligible scheduler of the owner of the thread queue on which the owner
0909        * of the thread queue is enqueued shall be made a helping scheduler of
0910        * the owner with the priority of the enqueueing thread.
0911        */
0912       CheckSchedulerNewHelper( ctx, ctx->owner_owner_priority );
0913       break;
0914     }
0915 
0916     case ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop: {
0917       /*
0918        * The set of eligible schedulers of the owner of the thread queue on
0919        * which the owner of the thread queue is enqueued shall not change.
0920        */
0921       if ( ctx->owner_obtain == TQ_EVENT_MUTEX_C_OBTAIN ) {
0922         CheckSchedulerNop( ctx, ctx->owner_owner_priority );
0923       } else {
0924         T_eq_u32( ctx->owner_owner_priority[ 1 ], PRIO_INVALID );
0925         T_eq_u32( ctx->owner_owner_priority[ 2 ], PRIO_INVALID );
0926         T_eq_u32( ctx->owner_owner_priority[ 3 ], PRIO_INVALID );
0927       }
0928       break;
0929     }
0930 
0931     case ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NA:
0932       break;
0933   }
0934 }
0935 
0936 static void ScoreTqReqEnqueuePriorityInherit_Setup(
0937   ScoreTqReqEnqueuePriorityInherit_Context *ctx
0938 )
0939 {
0940   TQReset( ctx->tq_ctx );
0941   TQSetPriority( ctx->tq_ctx, TQ_BLOCKER_A, PRIO_VERY_HIGH );
0942   TQSetPriority( ctx->tq_ctx, TQ_HELPER_C, PRIO_HIGH );
0943 
0944   #if defined( RTEMS_SMP )
0945   TQSetScheduler(
0946     ctx->tq_ctx,
0947     TQ_BLOCKER_C,
0948     SCHEDULER_B_ID,
0949     PRIO_ULTRA_LOW
0950   );
0951 
0952   if ( rtems_scheduler_get_processor_maximum() > 3 ) {
0953     RemoveProcessor( SCHEDULER_C_ID, 3 );
0954     AddProcessor( SCHEDULER_D_ID, 3 );
0955   }
0956   #endif
0957 }
0958 
0959 static void ScoreTqReqEnqueuePriorityInherit_Setup_Wrap( void *arg )
0960 {
0961   ScoreTqReqEnqueuePriorityInherit_Context *ctx;
0962 
0963   ctx = arg;
0964   ctx->Map.in_action_loop = false;
0965   ScoreTqReqEnqueuePriorityInherit_Setup( ctx );
0966 }
0967 
0968 static void ScoreTqReqEnqueuePriorityInherit_Teardown(
0969   ScoreTqReqEnqueuePriorityInherit_Context *ctx
0970 )
0971 {
0972   TQReset( ctx->tq_ctx );
0973 
0974   #if defined( RTEMS_SMP )
0975   if ( rtems_scheduler_get_processor_maximum() > 3 ) {
0976     RemoveProcessor( SCHEDULER_D_ID, 3 );
0977     AddProcessor( SCHEDULER_C_ID, 3 );
0978   }
0979   #endif
0980 }
0981 
0982 static void ScoreTqReqEnqueuePriorityInherit_Teardown_Wrap( void *arg )
0983 {
0984   ScoreTqReqEnqueuePriorityInherit_Context *ctx;
0985 
0986   ctx = arg;
0987   ctx->Map.in_action_loop = false;
0988   ScoreTqReqEnqueuePriorityInherit_Teardown( ctx );
0989 }
0990 
0991 static void ScoreTqReqEnqueuePriorityInherit_Prepare(
0992   ScoreTqReqEnqueuePriorityInherit_Context *ctx
0993 )
0994 {
0995   ctx->tq_ctx->how_many = 1;
0996 }
0997 
0998 static void ScoreTqReqEnqueuePriorityInherit_Action(
0999   ScoreTqReqEnqueuePriorityInherit_Context *ctx
1000 )
1001 {
1002   TQSend( ctx->tq_ctx, TQ_BLOCKER_A, TQ_EVENT_MUTEX_A_OBTAIN );
1003   TQSend(
1004     ctx->tq_ctx,
1005     TQ_HELPER_A,
1006     TQ_EVENT_MUTEX_B_OBTAIN | TQ_EVENT_ENQUEUE_PREPARE
1007   );
1008 
1009   if ( ctx->owner_obtain != 0 ) {
1010     TQSend( ctx->tq_ctx, TQ_HELPER_C, ctx->owner_obtain );
1011   }
1012 
1013   if ( ctx->other_before ) {
1014     TQSendAndWaitForExecutionStop(
1015       ctx->tq_ctx,
1016       TQ_BLOCKER_C,
1017       TQ_EVENT_ENQUEUE | TQ_EVENT_SURRENDER | TQ_EVENT_RUNNER_SYNC_2
1018     );
1019   }
1020 
1021   if ( ctx->queue_priority != PRIO_INVALID ) {
1022     TQSetPriority( ctx->tq_ctx, TQ_BLOCKER_B , ctx->queue_priority );
1023     TQSend(
1024       ctx->tq_ctx,
1025       TQ_BLOCKER_B,
1026       TQ_EVENT_ENQUEUE | TQ_EVENT_SURRENDER
1027     );
1028   }
1029 
1030   if ( ctx->other_after ) {
1031     TQSendAndWaitForExecutionStop(
1032       ctx->tq_ctx,
1033       TQ_BLOCKER_C,
1034       TQ_EVENT_ENQUEUE | TQ_EVENT_SURRENDER | TQ_EVENT_RUNNER_SYNC_2
1035     );
1036   }
1037 
1038   if ( ctx->vital_priority ) {
1039     TQSetPriority( ctx->tq_ctx, TQ_HELPER_A, PRIO_HIGH );
1040     TQSetPriority( ctx->tq_ctx, TQ_HELPER_C, PRIO_HIGH );
1041 
1042     if (
1043       ctx->queue_priority == PRIO_VERY_HIGH ||
1044       ctx->queue_priority == PRIO_ULTRA_HIGH
1045     ) {
1046       if ( ctx->other_before || ctx->other_after ) {
1047         AddVitalPriority( ctx, SCHEDULER_C_ID );
1048         AddVitalPriorityHelper( ctx, SCHEDULER_C_ID );
1049 
1050         if ( ctx->vital_scheduler ) {
1051           AddVitalScheduler( ctx, SCHEDULER_D_ID );
1052         }
1053       } else {
1054         AddVitalPriority( ctx, SCHEDULER_B_ID );
1055         AddVitalPriorityHelper( ctx, SCHEDULER_B_ID );
1056 
1057         if ( ctx->vital_scheduler ) {
1058           AddVitalScheduler( ctx, SCHEDULER_C_ID );
1059         }
1060       }
1061     } else {
1062       if ( ctx->vital_scheduler ) {
1063         if ( ctx->other_before || ctx->other_after ) {
1064           AddVitalScheduler( ctx, SCHEDULER_C_ID );
1065         } else {
1066           AddVitalScheduler( ctx, SCHEDULER_B_ID );
1067         }
1068       }
1069     }
1070   } else {
1071     TQSetPriority( ctx->tq_ctx, TQ_HELPER_A, PRIO_VERY_HIGH );
1072     TQSetPriority( ctx->tq_ctx, TQ_HELPER_C, PRIO_VERY_HIGH );
1073 
1074     if ( ctx->vital_scheduler ) {
1075       if ( ctx->other_before || ctx->other_after ) {
1076         AddVitalScheduler( ctx, SCHEDULER_C_ID );
1077       } else {
1078         AddVitalScheduler( ctx, SCHEDULER_B_ID );
1079       }
1080     }
1081   }
1082 
1083   if ( ctx->owner_obtain != 0 ) {
1084     TQClearDone( ctx->tq_ctx, TQ_HELPER_A );
1085     TQSendAndWaitForExecutionStop(
1086       ctx->tq_ctx,
1087       TQ_HELPER_A,
1088       ctx->owner_obtain | ctx->owner_release
1089     );
1090   }
1091 
1092   TQSend(
1093     ctx->tq_ctx,
1094     TQ_BLOCKER_A,
1095     TQ_EVENT_ENQUEUE | TQ_EVENT_SURRENDER | TQ_EVENT_RUNNER_SYNC
1096   );
1097 
1098   GetPriorities( ctx, TQ_HELPER_A, ctx->owner_priority );
1099   GetPriorities( ctx, TQ_HELPER_C, ctx->owner_owner_priority );
1100 
1101   if ( ctx->owner_obtain != 0 ) {
1102     TQSend( ctx->tq_ctx, TQ_HELPER_C, ctx->owner_release );
1103     TQWaitForDone( ctx->tq_ctx, TQ_HELPER_A );
1104     TQWaitForExecutionStop( ctx->tq_ctx, TQ_HELPER_A );
1105   }
1106 
1107   TQSchedulerRecordStart( ctx->tq_ctx );
1108   TQSend( ctx->tq_ctx, TQ_HELPER_A, TQ_EVENT_ENQUEUE_DONE );
1109 
1110   if ( ctx->other_before || ctx->other_after ) {
1111     TQSynchronizeRunner2();
1112   } else {
1113     TQSynchronizeRunner();
1114   }
1115 
1116   TQSchedulerRecordStop( ctx->tq_ctx );
1117 
1118   TQSend( ctx->tq_ctx, TQ_BLOCKER_A, TQ_EVENT_MUTEX_A_RELEASE );
1119   TQMutexObtain( ctx->tq_ctx, TQ_MUTEX_A );
1120   TQMutexRelease( ctx->tq_ctx, TQ_MUTEX_A );
1121 
1122   TQSend( ctx->tq_ctx, TQ_HELPER_A, TQ_EVENT_MUTEX_B_RELEASE );
1123   TQMutexObtain( ctx->tq_ctx, TQ_MUTEX_B );
1124   TQMutexRelease( ctx->tq_ctx, TQ_MUTEX_B );
1125 }
1126 
1127 static const ScoreTqReqEnqueuePriorityInherit_Entry
1128 ScoreTqReqEnqueuePriorityInherit_Entries[] = {
1129   { 1, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_NA,
1130     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_NA,
1131     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NA,
1132     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_NA,
1133     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NA },
1134   { 1, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_NA,
1135     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_NA,
1136     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NA,
1137     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_NA,
1138     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NA },
1139   { 1, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_NA,
1140     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_NA,
1141     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NA,
1142     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_NA,
1143     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NA },
1144   { 1, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_NA,
1145     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_NA,
1146     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NA,
1147     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_NA,
1148     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NA },
1149   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_Second,
1150     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1151     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1152     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1153     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1154   { 1, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_NA,
1155     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_NA,
1156     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NA,
1157     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_NA,
1158     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NA },
1159   { 0, 0, 0, 0, 0, 0, 0,
1160     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondLast,
1161     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1162     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1163     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1164     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1165   { 0, 0, 0, 0, 0, 0, 0,
1166     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondFirst,
1167     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1168     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1169     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1170     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1171   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_Second,
1172     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1173     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1174     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1175     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1176   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_Second,
1177     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1178     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1179     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1180     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1181   { 0, 0, 0, 0, 0, 0, 0,
1182     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialFirst,
1183     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1184     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1185     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1186     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1187   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_First,
1188     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1189     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1190     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1191     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1192   { 0, 0, 0, 0, 0, 0, 0,
1193     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialFirst,
1194     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1195     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1196     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1197     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1198   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_First,
1199     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1200     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1201     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1202     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1203   { 0, 0, 0, 0, 0, 0, 0,
1204     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialLast,
1205     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1206     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1207     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1208     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1209   { 0, 0, 0, 0, 0, 0, 0,
1210     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstLast,
1211     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1212     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1213     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1214     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1215   { 0, 0, 0, 0, 0, 0, 0,
1216     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstFirst,
1217     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1218     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1219     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1220     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1221   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_Second,
1222     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1223     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1224     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1225     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1226   { 0, 0, 0, 0, 0, 0, 0,
1227     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondLast,
1228     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1229     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1230     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1231     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1232   { 0, 0, 0, 0, 0, 0, 0,
1233     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondLast,
1234     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1235     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1236     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1237     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1238   { 0, 0, 0, 0, 0, 0, 0,
1239     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondFirst,
1240     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1241     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1242     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1243     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1244   { 0, 0, 0, 0, 0, 0, 0,
1245     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondFirst,
1246     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1247     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1248     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1249     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1250   { 0, 0, 0, 0, 0, 0, 0,
1251     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialFirst,
1252     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1253     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1254     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1255     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1256   { 0, 0, 0, 0, 0, 0, 0,
1257     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialFirst,
1258     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1259     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1260     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1261     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1262   { 0, 0, 0, 0, 0, 0, 0,
1263     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialLast,
1264     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1265     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1266     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1267     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1268   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_First,
1269     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1270     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1271     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1272     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1273   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_First,
1274     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1275     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1276     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1277     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1278   { 0, 0, 0, 0, 0, 0, 0,
1279     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstLast,
1280     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1281     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1282     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1283     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1284   { 0, 0, 0, 0, 0, 0, 0,
1285     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstFirst,
1286     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1287     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1288     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1289     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1290   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_Second,
1291     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1292     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1293     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1294     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1295   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_Second,
1296     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1297     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1298     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1299     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1300   { 0, 0, 0, 0, 0, 0, 0,
1301     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialLast,
1302     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1303     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1304     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1305     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1306   { 0, 0, 0, 0, 0, 0, 0,
1307     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialLast,
1308     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1309     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1310     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1311     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1312   { 0, 0, 0, 0, 0, 0, 0,
1313     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstLast,
1314     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1315     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1316     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1317     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1318   { 0, 0, 0, 0, 0, 0, 0,
1319     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstLast,
1320     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1321     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1322     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1323     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1324   { 0, 0, 0, 0, 0, 0, 0,
1325     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstFirst,
1326     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1327     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1328     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1329     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1330   { 0, 0, 0, 0, 0, 0, 0,
1331     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstFirst,
1332     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1333     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1334     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1335     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1336   { 0, 0, 0, 0, 0, 0, 0,
1337     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondLast,
1338     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1339     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1340     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1341     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1342   { 0, 0, 0, 0, 0, 0, 0,
1343     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondFirst,
1344     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1345     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1346     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1347     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1348   { 0, 0, 0, 0, 0, 0, 0,
1349     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialFirst,
1350     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1351     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1352     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1353     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1354   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_First,
1355     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1356     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1357     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1358     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1359   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_Second,
1360     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1361     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1362     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1363     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1364   { 0, 0, 0, 0, 0, 0, 0,
1365     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondLast,
1366     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1367     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1368     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1369     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1370   { 0, 0, 0, 0, 0, 0, 0,
1371     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondLast,
1372     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1373     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1374     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1375     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1376   { 0, 0, 0, 0, 0, 0, 0,
1377     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondFirst,
1378     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1379     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1380     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1381     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1382   { 0, 0, 0, 0, 0, 0, 0,
1383     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondFirst,
1384     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1385     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1386     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1387     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1388   { 0, 0, 0, 0, 0, 0, 0,
1389     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialFirst,
1390     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1391     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1392     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1393     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1394   { 0, 0, 0, 0, 0, 0, 0,
1395     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialFirst,
1396     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1397     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1398     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1399     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1400   { 0, 0, 0, 0, 0, 0, 0,
1401     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialLast,
1402     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1403     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1404     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1405     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1406   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_First,
1407     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1408     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1409     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1410     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1411   { 0, 0, 0, 0, 0, 0, 0, ScoreTqReqEnqueuePriorityInherit_Post_Position_First,
1412     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1413     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1414     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1415     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1416   { 0, 0, 0, 0, 0, 0, 0,
1417     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstLast,
1418     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1419     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1420     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1421     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1422   { 0, 0, 0, 0, 0, 0, 0,
1423     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstFirst,
1424     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1425     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Nop,
1426     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1427     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Nop },
1428   { 0, 0, 0, 0, 0, 0, 0,
1429     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialLast,
1430     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1431     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1432     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1433     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1434   { 0, 0, 0, 0, 0, 0, 0,
1435     ScoreTqReqEnqueuePriorityInherit_Post_Position_InitialLast,
1436     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1437     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1438     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1439     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1440   { 0, 0, 0, 0, 0, 0, 0,
1441     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstLast,
1442     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1443     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1444     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1445     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1446   { 0, 0, 0, 0, 0, 0, 0,
1447     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstLast,
1448     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1449     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1450     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1451     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1452   { 0, 0, 0, 0, 0, 0, 0,
1453     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstFirst,
1454     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1455     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1456     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1457     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1458   { 0, 0, 0, 0, 0, 0, 0,
1459     ScoreTqReqEnqueuePriorityInherit_Post_Position_FirstFirst,
1460     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Nop,
1461     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1462     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Nop,
1463     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1464   { 0, 0, 0, 0, 0, 0, 0,
1465     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondLast,
1466     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1467     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1468     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1469     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper },
1470   { 0, 0, 0, 0, 0, 0, 0,
1471     ScoreTqReqEnqueuePriorityInherit_Post_Position_SecondFirst,
1472     ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Raise,
1473     ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_NewHelper,
1474     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Raise,
1475     ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_NewHelper }
1476 };
1477 
1478 static const uint8_t
1479 ScoreTqReqEnqueuePriorityInherit_Map[] = {
1480   0, 0, 0, 0, 12, 12, 12, 39, 0, 0, 0, 0, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0,
1481   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,
1482   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0,
1483   0, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1484   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,
1485   0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1486   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,
1487   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 40, 0, 0, 0,
1488   0, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1489   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,
1490   0, 0, 0, 22, 22, 22, 46, 12, 12, 12, 39, 23, 23, 23, 47, 10, 10, 10, 10, 3,
1491   3, 3, 3, 24, 24, 24, 48, 3, 3, 3, 3, 14, 14, 14, 14, 2, 2, 2, 2, 2, 2, 2, 2,
1492   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
1493   3, 3, 8, 8, 8, 29, 9, 9, 9, 30, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1494   1, 1, 1, 1, 1, 3, 3, 3, 3, 5, 5, 5, 5, 3, 3, 3, 3, 6, 6, 6, 6, 3, 3, 3, 3, 5,
1495   5, 5, 5, 3, 3, 3, 3, 7, 7, 7, 7, 3, 3, 3, 3, 8, 8, 8, 29, 9, 9, 9, 30, 4, 4,
1496   4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 5, 5, 5, 5,
1497   3, 3, 3, 3, 6, 6, 6, 6, 3, 3, 3, 3, 5, 5, 5, 5, 3, 3, 3, 3, 7, 7, 7, 7, 25,
1498   25, 25, 49, 13, 13, 13, 40, 26, 26, 26, 50, 11, 11, 11, 11, 1, 1, 1, 1, 1, 1,
1499   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 27, 27, 27, 51, 3, 3, 3, 3, 15, 15,
1500   15, 15, 3, 3, 3, 3, 28, 28, 28, 52, 3, 3, 3, 3, 16, 16, 16, 16, 22, 22, 22,
1501   46, 12, 12, 12, 39, 23, 23, 23, 47, 10, 10, 10, 10, 31, 31, 31, 53, 24, 24,
1502   24, 48, 32, 32, 32, 54, 14, 14, 14, 14, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1503   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 17, 17, 17, 41,
1504   8, 8, 8, 29, 9, 9, 9, 30, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1505   1, 1, 1, 3, 3, 3, 3, 18, 18, 18, 42, 19, 19, 19, 43, 6, 6, 6, 6, 3, 3, 3, 3,
1506   20, 20, 20, 44, 21, 21, 21, 45, 7, 7, 7, 7, 17, 17, 17, 41, 8, 8, 8, 29, 9,
1507   9, 9, 30, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3,
1508   3, 3, 18, 18, 18, 42, 19, 19, 19, 43, 6, 6, 6, 6, 3, 3, 3, 3, 20, 20, 20, 44,
1509   21, 21, 21, 45, 7, 7, 7, 7, 25, 25, 25, 49, 13, 13, 13, 40, 26, 26, 26, 50,
1510   11, 11, 11, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 33, 33, 33,
1511   55, 27, 27, 27, 51, 34, 34, 34, 56, 15, 15, 15, 15, 35, 35, 35, 57, 28, 28,
1512   28, 52, 36, 36, 36, 58, 16, 16, 16, 16, 22, 22, 22, 46, 12, 12, 12, 39, 23,
1513   23, 23, 47, 10, 10, 10, 10, 31, 31, 31, 53, 24, 24, 24, 48, 32, 32, 32, 54,
1514   14, 14, 14, 14, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1515   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 17, 17, 17, 41, 8, 8, 8, 29, 9, 9, 9, 30,
1516   4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 37, 37, 37, 59,
1517   18, 18, 18, 42, 19, 19, 19, 43, 6, 6, 6, 6, 38, 38, 38, 60, 20, 20, 20, 44,
1518   21, 21, 21, 45, 7, 7, 7, 7, 17, 17, 17, 41, 8, 8, 8, 29, 9, 9, 9, 30, 4, 4,
1519   4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 37, 37, 37, 59, 18, 18,
1520   18, 42, 19, 19, 19, 43, 6, 6, 6, 6, 38, 38, 38, 60, 20, 20, 20, 44, 21, 21,
1521   21, 45, 7, 7, 7, 7, 25, 25, 25, 49, 13, 13, 13, 40, 26, 26, 26, 50, 11, 11,
1522   11, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 33, 33, 33, 55, 27,
1523   27, 27, 51, 34, 34, 34, 56, 15, 15, 15, 15, 35, 35, 35, 57, 28, 28, 28, 52,
1524   36, 36, 36, 58, 16, 16, 16, 16
1525 };
1526 
1527 static size_t ScoreTqReqEnqueuePriorityInherit_Scope(
1528   void  *arg,
1529   char  *buf,
1530   size_t n
1531 )
1532 {
1533   ScoreTqReqEnqueuePriorityInherit_Context *ctx;
1534 
1535   ctx = arg;
1536 
1537   if ( ctx->Map.in_action_loop ) {
1538     return T_get_scope(
1539       ScoreTqReqEnqueuePriorityInherit_PreDesc,
1540       buf,
1541       n,
1542       ctx->Map.pcs
1543     );
1544   }
1545 
1546   return 0;
1547 }
1548 
1549 static T_fixture ScoreTqReqEnqueuePriorityInherit_Fixture = {
1550   .setup = ScoreTqReqEnqueuePriorityInherit_Setup_Wrap,
1551   .stop = NULL,
1552   .teardown = ScoreTqReqEnqueuePriorityInherit_Teardown_Wrap,
1553   .scope = ScoreTqReqEnqueuePriorityInherit_Scope,
1554   .initial_context = &ScoreTqReqEnqueuePriorityInherit_Instance
1555 };
1556 
1557 static const uint16_t ScoreTqReqEnqueuePriorityInherit_Weights[] = {
1558   256, 64, 16, 8, 4, 1
1559 };
1560 
1561 static void ScoreTqReqEnqueuePriorityInherit_Skip(
1562   ScoreTqReqEnqueuePriorityInherit_Context *ctx,
1563   size_t                                    index
1564 )
1565 {
1566   switch ( index + 1 ) {
1567     case 1:
1568       ctx->Map.pcs[ 1 ] = ScoreTqReqEnqueuePriorityInherit_Pre_QueueEligible_NA - 1;
1569       /* Fall through */
1570     case 2:
1571       ctx->Map.pcs[ 2 ] = ScoreTqReqEnqueuePriorityInherit_Pre_QueueIneligible_NA - 1;
1572       /* Fall through */
1573     case 3:
1574       ctx->Map.pcs[ 3 ] = ScoreTqReqEnqueuePriorityInherit_Pre_PriorityForOwner_NA - 1;
1575       /* Fall through */
1576     case 4:
1577       ctx->Map.pcs[ 4 ] = ScoreTqReqEnqueuePriorityInherit_Pre_SchedulerForOwner_NA - 1;
1578       /* Fall through */
1579     case 5:
1580       ctx->Map.pcs[ 5 ] = ScoreTqReqEnqueuePriorityInherit_Pre_OwnerState_NA - 1;
1581       break;
1582   }
1583 }
1584 
1585 static inline ScoreTqReqEnqueuePriorityInherit_Entry
1586 ScoreTqReqEnqueuePriorityInherit_PopEntry(
1587   ScoreTqReqEnqueuePriorityInherit_Context *ctx
1588 )
1589 {
1590   size_t index;
1591 
1592   if ( ctx->Map.skip ) {
1593     size_t i;
1594 
1595     ctx->Map.skip = false;
1596     index = 0;
1597 
1598     for ( i = 0; i < 6; ++i ) {
1599       index += ScoreTqReqEnqueuePriorityInherit_Weights[ i ] * ctx->Map.pcs[ i ];
1600     }
1601   } else {
1602     index = ctx->Map.index;
1603   }
1604 
1605   ctx->Map.index = index + 1;
1606 
1607   return ScoreTqReqEnqueuePriorityInherit_Entries[
1608     ScoreTqReqEnqueuePriorityInherit_Map[ index ]
1609   ];
1610 }
1611 
1612 static void ScoreTqReqEnqueuePriorityInherit_TestVariant(
1613   ScoreTqReqEnqueuePriorityInherit_Context *ctx
1614 )
1615 {
1616   ScoreTqReqEnqueuePriorityInherit_Pre_Scheduler_Prepare(
1617     ctx,
1618     ctx->Map.pcs[ 0 ]
1619   );
1620 
1621   if ( ctx->Map.skip ) {
1622     ScoreTqReqEnqueuePriorityInherit_Skip( ctx, 0 );
1623     return;
1624   }
1625 
1626   ScoreTqReqEnqueuePriorityInherit_Pre_QueueEligible_Prepare(
1627     ctx,
1628     ctx->Map.pcs[ 1 ]
1629   );
1630   ScoreTqReqEnqueuePriorityInherit_Pre_QueueIneligible_Prepare(
1631     ctx,
1632     ctx->Map.pcs[ 2 ]
1633   );
1634   ScoreTqReqEnqueuePriorityInherit_Pre_PriorityForOwner_Prepare(
1635     ctx,
1636     ctx->Map.pcs[ 3 ]
1637   );
1638   ScoreTqReqEnqueuePriorityInherit_Pre_SchedulerForOwner_Prepare(
1639     ctx,
1640     ctx->Map.pcs[ 4 ]
1641   );
1642   ScoreTqReqEnqueuePriorityInherit_Pre_OwnerState_Prepare(
1643     ctx,
1644     ctx->Map.pcs[ 5 ]
1645   );
1646   ScoreTqReqEnqueuePriorityInherit_Action( ctx );
1647   ScoreTqReqEnqueuePriorityInherit_Post_Position_Check(
1648     ctx,
1649     ctx->Map.entry.Post_Position
1650   );
1651   ScoreTqReqEnqueuePriorityInherit_Post_OwnerPriority_Check(
1652     ctx,
1653     ctx->Map.entry.Post_OwnerPriority
1654   );
1655   ScoreTqReqEnqueuePriorityInherit_Post_OwnerScheduler_Check(
1656     ctx,
1657     ctx->Map.entry.Post_OwnerScheduler
1658   );
1659   ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerPriority_Check(
1660     ctx,
1661     ctx->Map.entry.Post_OwnerOwnerPriority
1662   );
1663   ScoreTqReqEnqueuePriorityInherit_Post_OwnerOwnerScheduler_Check(
1664     ctx,
1665     ctx->Map.entry.Post_OwnerOwnerScheduler
1666   );
1667 }
1668 
1669 static T_fixture_node ScoreTqReqEnqueuePriorityInherit_Node;
1670 
1671 static T_remark ScoreTqReqEnqueuePriorityInherit_Remark = {
1672   .next = NULL,
1673   .remark = "ScoreTqReqEnqueuePriorityInherit"
1674 };
1675 
1676 void ScoreTqReqEnqueuePriorityInherit_Run( TQContext *tq_ctx )
1677 {
1678   ScoreTqReqEnqueuePriorityInherit_Context *ctx;
1679 
1680   ctx = &ScoreTqReqEnqueuePriorityInherit_Instance;
1681   ctx->tq_ctx = tq_ctx;
1682 
1683   ctx = T_push_fixture(
1684     &ScoreTqReqEnqueuePriorityInherit_Node,
1685     &ScoreTqReqEnqueuePriorityInherit_Fixture
1686   );
1687   ctx->Map.in_action_loop = true;
1688   ctx->Map.index = 0;
1689   ctx->Map.skip = false;
1690 
1691   for (
1692     ctx->Map.pcs[ 0 ] = ScoreTqReqEnqueuePriorityInherit_Pre_Scheduler_One;
1693     ctx->Map.pcs[ 0 ] < ScoreTqReqEnqueuePriorityInherit_Pre_Scheduler_NA;
1694     ++ctx->Map.pcs[ 0 ]
1695   ) {
1696     for (
1697       ctx->Map.pcs[ 1 ] = ScoreTqReqEnqueuePriorityInherit_Pre_QueueEligible_None;
1698       ctx->Map.pcs[ 1 ] < ScoreTqReqEnqueuePriorityInherit_Pre_QueueEligible_NA;
1699       ++ctx->Map.pcs[ 1 ]
1700     ) {
1701       for (
1702         ctx->Map.pcs[ 2 ] = ScoreTqReqEnqueuePriorityInherit_Pre_QueueIneligible_None;
1703         ctx->Map.pcs[ 2 ] < ScoreTqReqEnqueuePriorityInherit_Pre_QueueIneligible_NA;
1704         ++ctx->Map.pcs[ 2 ]
1705       ) {
1706         for (
1707           ctx->Map.pcs[ 3 ] = ScoreTqReqEnqueuePriorityInherit_Pre_PriorityForOwner_Vital;
1708           ctx->Map.pcs[ 3 ] < ScoreTqReqEnqueuePriorityInherit_Pre_PriorityForOwner_NA;
1709           ++ctx->Map.pcs[ 3 ]
1710         ) {
1711           for (
1712             ctx->Map.pcs[ 4 ] = ScoreTqReqEnqueuePriorityInherit_Pre_SchedulerForOwner_Vital;
1713             ctx->Map.pcs[ 4 ] < ScoreTqReqEnqueuePriorityInherit_Pre_SchedulerForOwner_NA;
1714             ++ctx->Map.pcs[ 4 ]
1715           ) {
1716             for (
1717               ctx->Map.pcs[ 5 ] = ScoreTqReqEnqueuePriorityInherit_Pre_OwnerState_NotEnqueued;
1718               ctx->Map.pcs[ 5 ] < ScoreTqReqEnqueuePriorityInherit_Pre_OwnerState_NA;
1719               ++ctx->Map.pcs[ 5 ]
1720             ) {
1721               ctx->Map.entry = ScoreTqReqEnqueuePriorityInherit_PopEntry(
1722                 ctx
1723               );
1724 
1725               if ( ctx->Map.entry.Skip ) {
1726                 continue;
1727               }
1728 
1729               ScoreTqReqEnqueuePriorityInherit_Prepare( ctx );
1730               ScoreTqReqEnqueuePriorityInherit_TestVariant( ctx );
1731             }
1732           }
1733         }
1734       }
1735     }
1736   }
1737 
1738   T_add_remark( &ScoreTqReqEnqueuePriorityInherit_Remark );
1739   T_pop_fixture();
1740 }
1741 
1742 /** @} */