/* SPDX-License-Identifier: BSD-2-Clause */
/**
* @file
*
* @ingroup ScoreTqReqTimeoutPriorityInherit
*/
/*
* Copyright (C) 2021 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This file is part of the RTEMS quality process and was automatically
* generated. If you find something that needs to be fixed or
* worded better please post a report or patch to an RTEMS mailing list
* or raise a bug report:
*
* https://www.rtems.org/bugs.html
*
* For information on updating and regenerating please refer to the How-To
* section in the Software Requirements Engineering chapter of the
* RTEMS Software Engineering manual. The manual is provided as a part of
* a release. For development sources please refer to the online
* documentation at:
*
* https://docs.rtems.org
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <rtems/score/smpimpl.h>
#include <rtems/score/threadimpl.h>
#include "tr-tq-timeout-priority-inherit.h"
#include "tx-support.h"
#include <rtems/test.h>
/**
* @defgroup ScoreTqReqTimeoutPriorityInherit \
* spec:/score/tq/req/timeout-priority-inherit
*
* @ingroup TestsuitesValidationNoClock0
*
* @{
*/
typedef struct {
uint32_t Skip : 1;
uint32_t Pre_HomeScheduler_NA : 1;
uint32_t Pre_EligibleScheduler_NA : 1;
uint32_t Pre_Queue_NA : 1;
uint32_t Pre_OwnerPriority_NA : 1;
uint32_t Pre_OwnerState_NA : 1;
uint32_t Pre_OwnerQueue_NA : 1;
uint32_t Pre_OwnerOwnerPriority_NA : 1;
uint32_t Pre_WaitState_NA : 1;
uint32_t Post_Status : 2;
uint32_t Post_Unblock : 2;
uint32_t Post_OwnerPriority : 2;
uint32_t Post_OwnerOwnerPriority : 2;
} ScoreTqReqTimeoutPriorityInherit_Entry;
/**
* @brief Test context for spec:/score/tq/req/timeout-priority-inherit test
* case.
*/
typedef struct {
/**
* @brief This member contains the call within ISR request.
*/
CallWithinISRRequest request;
/**
* @brief This member specifies the scheduler of the thread.
*/
rtems_id scheduler_id;
/**
* @brief If this member is true, then the thread shall have at least two
* eligible scheduler.
*/
bool other_scheduler;
/**
* @brief This member specifies the queue node kind.
*/
TQNodeKind queue_node;
/**
* @brief This member specifies the owner priority node kind.
*/
TQNodeKind owner_node;
/**
* @brief This member specifies which mutex obtain event shall be used to
* block the thread queue owner.
*/
rtems_event_set owner_obtain;
/**
* @brief This member specifies which mutex release event shall be used to
* unblock the thread queue owner.
*/
rtems_event_set owner_release;
/**
* @brief This member specifies the owner queue node kind.
*/
TQNodeKind owner_queue_node;
/**
* @brief This member specifies the kind of the priority node of the owner of
* the thread queue on which the owner of the thread queue is blocked.
*/
TQNodeKind owner_owner_node;
/**
* @brief This member specifies the wait state.
*/
TQWaitState wait_state;
/**
* @brief This member contains the thread queue priority.
*/
rtems_task_priority queue_priority;
/**
* @brief This member contains the owner priority.
*/
rtems_task_priority owner_priority;
/**
* @brief This member contains the owner priority after the timeout or
* surrender.
*/
rtems_task_priority owner_priority_after;
/**
* @brief This member contains the priority of the thread queue on which the
* owner is enqueued.
*/
rtems_task_priority owner_queue_priority;
/**
* @brief This member contains the priority of the owner of the thread queue
* on which the owner is enqueued.
*/
rtems_task_priority owner_owner_priority;
/**
* @brief This member contains the priority after the timeout or surrender of
* the owner of the thread queue on which the owner is enqueued.
*/
rtems_task_priority owner_owner_priority_after;
/**
* @brief If this member is true, then the queue helper shall surrender the
* thread queue.
*/
bool queue_helper_surrender;
/**
* @brief If this member is true, then the owner helper shall release mutex
* A.
*/
bool owner_helper_release;
/**
* @brief If this member is true, then the owner queue helper shall release
* the mutex on which the owner is blocked.
*/
bool owner_queue_helper_release;
/**
* @brief If this member is true, then helper of the owner of the mutex which
* the owner blocked shall release mutex B.
*/
bool owner_owner_helper_release;
/**
* @brief This member contains a copy of the corresponding
* ScoreTqReqTimeoutPriorityInherit_Run() parameter.
*/
TQContext *tq_ctx;
struct {
/**
* @brief This member defines the pre-condition indices for the next
* action.
*/
size_t pci[ 8 ];
/**
* @brief This member defines the pre-condition states for the next action.
*/
size_t pcs[ 8 ];
/**
* @brief If this member is true, then the test action loop is executed.
*/
bool in_action_loop;
/**
* @brief This member contains the next transition map index.
*/
size_t index;
/**
* @brief This member contains the current transition map entry.
*/
ScoreTqReqTimeoutPriorityInherit_Entry entry;
/**
* @brief If this member is true, then the current transition variant
* should be skipped.
*/
bool skip;
} Map;
} ScoreTqReqTimeoutPriorityInherit_Context;
static ScoreTqReqTimeoutPriorityInherit_Context
ScoreTqReqTimeoutPriorityInherit_Instance;
static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_HomeScheduler[] = {
"Home",
"Helping",
"NA"
};
static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_EligibleScheduler[] = {
"One",
"More",
"NA"
};
static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_Queue[] = {
"Only",
"Vital",
"Dispensable",
"NA"
};
static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerPriority[] = {
"Only",
"Vital",
"Dispensable",
"NA"
};
static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerState[] = {
"NotEnqueued",
"FIFO",
"Priority",
"PriorityInherit",
"NA"
};
static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerQueue[] = {
"Only",
"Vital",
"Dispensable",
"NA"
};
static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerOwnerPriority[] = {
"Only",
"Vital",
"Dispensable",
"NA"
};
static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_WaitState[] = {
"Blocked",
"IntendToBlock",
"ReadyAgain",
"NA"
};
static const char * const * const ScoreTqReqTimeoutPriorityInherit_PreDesc[] = {
ScoreTqReqTimeoutPriorityInherit_PreDesc_HomeScheduler,
ScoreTqReqTimeoutPriorityInherit_PreDesc_EligibleScheduler,
ScoreTqReqTimeoutPriorityInherit_PreDesc_Queue,
ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerPriority,
ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerState,
ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerQueue,
ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerOwnerPriority,
ScoreTqReqTimeoutPriorityInherit_PreDesc_WaitState,
NULL
};
typedef ScoreTqReqTimeoutPriorityInherit_Context Context;
#define THREAD TQ_BLOCKER_A
#define THREAD_HELPER_A TQ_HELPER_B
#define THREAD_HELPER_B TQ_HELPER_C
#define QUEUE_HELPER TQ_BLOCKER_B
#define OWNER TQ_BLOCKER_C
#define OWNER_HELPER TQ_BLOCKER_D
#define OWNER_QUEUE_HELPER TQ_BLOCKER_E
#define OWNER_OWNER TQ_WORKER_F
#define OWNER_OWNER_HELPER TQ_HELPER_A
static bool GetUnblock( const Context *ctx, size_t *index )
{
while ( true ) {
const T_scheduler_event *event;
event = TQGetNextUnblock( ctx->tq_ctx, index );
if ( event == &T_scheduler_event_null ) {
return false;
}
if ( event->thread == ctx->tq_ctx->worker_tcb[ THREAD ] ) {
return true;
}
}
}
static void Tick( void *arg )
{
Context *ctx;
ctx = arg;
TQSchedulerRecordStart( ctx->tq_ctx );
FinalClockTick();
TQSchedulerRecordStop( ctx->tq_ctx );
}
static void SchedulerBlock(
void *arg,
const T_scheduler_event *event,
T_scheduler_when when
)
{
Context *ctx;
ctx = arg;
if (
when == T_SCHEDULER_BEFORE &&
event->operation == T_SCHEDULER_BLOCK &&
event->thread == ctx->tq_ctx->worker_tcb[ THREAD ]
) {
T_scheduler_set_event_handler( NULL, NULL );
ctx->request.handler = Tick;
CallWithinISRSubmit( &ctx->request );
}
}
static void ThreadTimeout( void *arg )
{
Context *ctx;
ctx = arg;
TQSchedulerRecordStart( ctx->tq_ctx );
_Thread_Timeout(
&ctx->tq_ctx->worker_tcb[ THREAD ]->Timer.Watchdog
);
TQSchedulerRecordStop( ctx->tq_ctx );
}
static void SchedulerUnblock(
void *arg,
const T_scheduler_event *event,
T_scheduler_when when
)
{
Context *ctx;
ctx = arg;
if (
when == T_SCHEDULER_BEFORE &&
event->operation == T_SCHEDULER_UNBLOCK &&
event->thread == ctx->tq_ctx->worker_tcb[ THREAD ]
) {
T_scheduler_set_event_handler( NULL, NULL );
if ( ctx->scheduler_id == SCHEDULER_B_ID ) {
#if defined(RTEMS_SMP)
_SMP_Unicast_action( 1, ThreadTimeout, ctx );
#else
T_unreachable();
#endif
} else {
ctx->request.handler = ThreadTimeout;
CallWithinISRSubmit( &ctx->request );
}
}
}
static void GetPriorities( Context *ctx )
{
ctx->owner_priority_after = GetPriorityByScheduler(
ctx->tq_ctx->worker_id[ OWNER ],
ctx->scheduler_id
);
ctx->owner_owner_priority_after = GetPriorityByScheduler(
ctx->tq_ctx->worker_id[ OWNER_OWNER ],
ctx->scheduler_id
);
}
static void PrepareThread( const Context *ctx )
{
if ( ctx->other_scheduler ) {
rtems_id other_scheduler_id;
if ( ctx->scheduler_id == SCHEDULER_A_ID ) {
other_scheduler_id = SCHEDULER_B_ID;
} else {
other_scheduler_id = SCHEDULER_B_ID;
}
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
THREAD,
TQ_EVENT_MUTEX_D_OBTAIN
);
TQSetScheduler(
ctx->tq_ctx,
THREAD_HELPER_A,
other_scheduler_id,
PRIO_NEARLY_IDLE - 1
);
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
THREAD_HELPER_A,
TQ_EVENT_MUTEX_D_OBTAIN
);
if ( rtems_scheduler_get_processor_maximum() >= 3 ) {
TQSetScheduler(
ctx->tq_ctx,
THREAD_HELPER_B,
SCHEDULER_C_ID,
PRIO_NORMAL
);
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
THREAD_HELPER_B,
TQ_EVENT_MUTEX_D_OBTAIN
);
}
}
}
static rtems_task_priority PrepareQueue(
Context *ctx,
rtems_task_priority priority
)
{
switch ( ctx->queue_node ) {
case TQ_NODE_ONLY:
ctx->queue_helper_surrender = false;
break;
case TQ_NODE_VITAL:
ctx->queue_helper_surrender = true;
TQSetScheduler(
ctx->tq_ctx,
QUEUE_HELPER,
ctx->scheduler_id,
priority + 1
);
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
QUEUE_HELPER,
TQ_EVENT_ENQUEUE
);
break;
case TQ_NODE_DISPENSABLE:
ctx->queue_helper_surrender = true;
--priority;
TQSetScheduler(
ctx->tq_ctx,
QUEUE_HELPER,
ctx->scheduler_id,
priority
);
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
QUEUE_HELPER,
TQ_EVENT_ENQUEUE
);
break;
}
ctx->queue_priority = priority;
return priority;
}
static rtems_task_priority PrepareOwner(
Context *ctx,
rtems_task_priority priority
)
{
switch ( ctx->owner_node ) {
case TQ_NODE_ONLY:
ctx->owner_helper_release = false;
TQSetPriority( ctx->tq_ctx, OWNER, PRIO_FLEXIBLE );
break;
case TQ_NODE_VITAL:
if ( ctx->scheduler_id == SCHEDULER_A_ID ) {
ctx->owner_helper_release = false;
TQSetPriority( ctx->tq_ctx, OWNER, priority + 1 );
} else {
ctx->owner_helper_release = true;
TQSetPriority( ctx->tq_ctx, OWNER, PRIO_FLEXIBLE );
TQSetScheduler(
ctx->tq_ctx,
OWNER_HELPER,
ctx->scheduler_id,
priority + 1
);
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
OWNER_HELPER,
TQ_EVENT_MUTEX_A_OBTAIN
);
}
break;
case TQ_NODE_DISPENSABLE:
--priority;
if ( ctx->scheduler_id == SCHEDULER_A_ID ) {
ctx->owner_helper_release = false;
TQSetPriority( ctx->tq_ctx, OWNER, priority );
} else {
ctx->owner_helper_release = true;
TQSetPriority( ctx->tq_ctx, OWNER, PRIO_FLEXIBLE );
TQSetScheduler(
ctx->tq_ctx,
OWNER_HELPER,
ctx->scheduler_id,
priority
);
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
OWNER_HELPER,
TQ_EVENT_MUTEX_A_OBTAIN
);
}
break;
}
ctx->owner_priority = priority;
return priority;
}
static rtems_task_priority PrepareOwnerQueue(
Context *ctx,
rtems_task_priority priority
)
{
if ( ctx->owner_obtain != 0 ) {
switch ( ctx->owner_queue_node ) {
case TQ_NODE_ONLY:
ctx->owner_queue_helper_release = false;
break;
case TQ_NODE_VITAL:
ctx->owner_queue_helper_release = true;
TQSetScheduler(
ctx->tq_ctx,
OWNER_QUEUE_HELPER,
ctx->scheduler_id,
priority + 1
);
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
OWNER_QUEUE_HELPER,
ctx->owner_obtain
);
break;
case TQ_NODE_DISPENSABLE:
ctx->owner_queue_helper_release = true;
--priority;
TQSetScheduler(
ctx->tq_ctx,
OWNER_QUEUE_HELPER,
ctx->scheduler_id,
priority
);
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
OWNER_QUEUE_HELPER,
ctx->owner_obtain
);
break;
}
ctx->owner_queue_priority = priority;
} else {
ctx->owner_queue_helper_release = false;
ctx->owner_queue_priority = PRIO_INVALID;
}
return priority;
}
static void PrepareOwnerOwner( Context *ctx, rtems_task_priority priority )
{
if ( ctx->owner_obtain != 0 ) {
switch ( ctx->owner_owner_node ) {
case TQ_NODE_ONLY:
ctx->owner_owner_helper_release = false;
TQSetPriority( ctx->tq_ctx, OWNER_OWNER, PRIO_FLEXIBLE );
break;
case TQ_NODE_VITAL:
if ( ctx->scheduler_id == SCHEDULER_A_ID ) {
ctx->owner_owner_helper_release = false;
TQSetPriority( ctx->tq_ctx, OWNER_OWNER, priority + 1 );
} else {
ctx->owner_owner_helper_release = true;
TQSetPriority( ctx->tq_ctx, OWNER_OWNER, PRIO_FLEXIBLE );
TQSetScheduler(
ctx->tq_ctx,
OWNER_OWNER_HELPER,
ctx->scheduler_id,
priority + 1
);
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
OWNER_OWNER_HELPER,
TQ_EVENT_MUTEX_B_OBTAIN
);
}
break;
case TQ_NODE_DISPENSABLE:
--priority;
if ( ctx->scheduler_id == SCHEDULER_A_ID ) {
ctx->owner_owner_helper_release = false;
TQSetPriority( ctx->tq_ctx, OWNER_OWNER, priority );
} else {
ctx->owner_owner_helper_release = true;
TQSetPriority( ctx->tq_ctx, OWNER_OWNER, PRIO_FLEXIBLE );
TQSetScheduler(
ctx->tq_ctx,
OWNER_OWNER_HELPER,
ctx->scheduler_id,
priority
);
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
OWNER_OWNER_HELPER,
TQ_EVENT_MUTEX_B_OBTAIN
);
}
break;
}
ctx->owner_owner_priority = priority;
} else {
ctx->owner_owner_helper_release = false;
ctx->owner_owner_priority = PRIO_INVALID;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Prepare(
ScoreTqReqTimeoutPriorityInherit_Context *ctx,
ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler state
)
{
switch ( state ) {
case ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Home: {
/*
* While the home scheduler of the thread is the home scheduler of the
* thread queue owner.
*/
ctx->scheduler_id = SCHEDULER_A_ID;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Helping: {
/*
* While the home scheduler of the thread is a helping scheduler of the
* thread queue owner.
*/
ctx->scheduler_id = SCHEDULER_B_ID;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_NA:
break;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_Prepare(
ScoreTqReqTimeoutPriorityInherit_Context *ctx,
ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler state
)
{
switch ( state ) {
case ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_One: {
/*
* While the thread has exactly one eligible scheduler.
*/
ctx->other_scheduler = false;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_More: {
/*
* While the thread has at least two eligible scheduler.
*/
ctx->other_scheduler = true;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_NA:
break;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Prepare(
ScoreTqReqTimeoutPriorityInherit_Context *ctx,
ScoreTqReqTimeoutPriorityInherit_Pre_Queue state
)
{
switch ( state ) {
case ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Only: {
/*
* While the priority node of the thread is the only priority node in the
* priority queue associated with the scheduler of the thread queue.
*/
ctx->queue_node = TQ_NODE_ONLY;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Vital: {
/*
* While the priority node of the thread is not the only priority node in
* the priority queue associated with the scheduler of the thread queue,
* while the priority node of the thread is the highest priority node in
* the priority queue.
*/
ctx->queue_node = TQ_NODE_VITAL;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Dispensable: {
/*
* While the priority node of the thread is not the only priority node in
* the priority queue associated with the scheduler of the thread queue,
* while the priority node of the thread is not the highest priority node
* in the priority queue.
*/
ctx->queue_node = TQ_NODE_DISPENSABLE;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_Queue_NA:
break;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_Prepare(
ScoreTqReqTimeoutPriorityInherit_Context *ctx,
ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority state
)
{
switch ( state ) {
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_Only: {
/*
* While the priority node of the thread queue is the only priority node
* associated with the scheduler available to the owner.
*/
ctx->owner_node = TQ_NODE_ONLY;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_Vital: {
/*
* While the priority node of the thread queue is not the only priority
* node associated with the scheduler available to the owner, while the
* priority node of the thread queue is the highest priority node
* available to the owner.
*/
ctx->owner_node = TQ_NODE_VITAL;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_Dispensable: {
/*
* While the priority node of the thread queue is not the only priority
* node associated with the scheduler available to the owner, while the
* priority node of the thread queue is not the highest priority node
* available to the owner.
*/
ctx->owner_node = TQ_NODE_DISPENSABLE;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_NA:
break;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_Prepare(
ScoreTqReqTimeoutPriorityInherit_Context *ctx,
ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState state
)
{
switch ( state ) {
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_NotEnqueued: {
/*
* While the owner of the thread queue is not enqueued on a thread queue.
*/
ctx->owner_obtain = 0;
ctx->owner_release = 0;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_FIFO: {
/*
* While the owner of the thread queue is enqueued on a thread queue in
* FIFO order.
*/
ctx->owner_obtain = TQ_EVENT_MUTEX_FIFO_OBTAIN;
ctx->owner_release = TQ_EVENT_MUTEX_FIFO_RELEASE;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_Priority: {
/*
* While the owner of the thread queue is enqueued on a thread queue in
* priority order.
*/
ctx->owner_obtain = TQ_EVENT_MUTEX_NO_PROTOCOL_OBTAIN;
ctx->owner_release = TQ_EVENT_MUTEX_NO_PROTOCOL_RELEASE;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_PriorityInherit: {
/*
* While the owner of the thread queue is enqueued on a thread queue in
* priority order with priority inheritance.
*/
ctx->owner_obtain = TQ_EVENT_MUTEX_C_OBTAIN;
ctx->owner_release = TQ_EVENT_MUTEX_C_RELEASE;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_NA:
break;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_Prepare(
ScoreTqReqTimeoutPriorityInherit_Context *ctx,
ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue state
)
{
switch ( state ) {
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_Only: {
/*
* While the priority node of the owner is the only priority node in the
* priority queue associated with the scheduler of the thread queue on
* which the owner is enqueued.
*/
ctx->owner_queue_node = TQ_NODE_ONLY;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_Vital: {
/*
* While the priority node of the owner is not the only priority node in
* the priority queue associated with the scheduler of the thread queue
* on which the owner is enqueued, while the priority node of the owner
* is the highest priority node in the priority queue.
*/
ctx->owner_queue_node = TQ_NODE_VITAL;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_Dispensable: {
/*
* While the priority node of the owner is not the only priority node in
* the priority queue associated with the scheduler of the thread queue
* on which the owner is enqueued, while the priority node of the owner
* is not the highest priority node in the priority queue.
*/
ctx->owner_queue_node = TQ_NODE_DISPENSABLE;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_NA:
break;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_Prepare(
ScoreTqReqTimeoutPriorityInherit_Context *ctx,
ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority state
)
{
switch ( state ) {
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_Only: {
/*
* While the priority node of the thread queue on which the owner is
* enqueued is the only priority node associated with the scheduler
* available to the owner of the thread queue on which the owner is
* enqueued.
*/
ctx->owner_owner_node = TQ_NODE_ONLY;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_Vital: {
/*
* While the priority node of the thread queue on which the owner is
* enqueued is not the only priority node associated with the scheduler
* available to the owner of the thread queue on which the owner is
* enqueued, while the priority node of the thread queue on which the
* owner is enqueued is the highest priority node available to the owner
* of the thread queue on which the owner is enqueued.
*/
ctx->owner_owner_node = TQ_NODE_VITAL;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_Dispensable: {
/*
* While the priority node of the thread queue on which the owner is
* enqueued is not the only priority node associated with the scheduler
* available to the owner of the thread queue on which the owner is
* enqueued, while the priority node of the thread queue is on which the
* owner is enqueued not the highest priority node available to the owner
* of the thread queue on which the owner is enqueued.
*/
ctx->owner_owner_node = TQ_NODE_DISPENSABLE;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_NA:
break;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_Prepare(
ScoreTqReqTimeoutPriorityInherit_Context *ctx,
ScoreTqReqTimeoutPriorityInherit_Pre_WaitState state
)
{
switch ( state ) {
case ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_Blocked: {
/*
* While the thread is in the blocked wait state.
*/
ctx->wait_state = TQ_WAIT_STATE_BLOCKED;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_IntendToBlock: {
/*
* While the thread is in the intend to block wait state.
*/
ctx->wait_state = TQ_WAIT_STATE_INTEND_TO_BLOCK;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_ReadyAgain: {
/*
* While the thread is in the ready again wait state.
*/
ctx->wait_state = TQ_WAIT_STATE_READY_AGAIN;
break;
}
case ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_NA:
break;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Post_Status_Check(
ScoreTqReqTimeoutPriorityInherit_Context *ctx,
ScoreTqReqTimeoutPriorityInherit_Post_Status state
)
{
switch ( state ) {
case ScoreTqReqTimeoutPriorityInherit_Post_Status_Ok: {
/*
* The return status of the directive call shall be derived from
* STATUS_SUCCESSFUL.
*/
T_eq_int(
ctx->tq_ctx->status[ THREAD ],
TQConvertStatus( ctx->tq_ctx, STATUS_SUCCESSFUL )
);
break;
}
case ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout: {
/*
* The return status of the directive call shall be derived from
* STATUS_TIMEOUT.
*/
T_eq_int(
ctx->tq_ctx->status[ THREAD ],
TQConvertStatus( ctx->tq_ctx, STATUS_TIMEOUT )
);
break;
}
case ScoreTqReqTimeoutPriorityInherit_Post_Status_NA:
break;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Check(
ScoreTqReqTimeoutPriorityInherit_Context *ctx,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock state
)
{
size_t i;
i = 0;
switch ( state ) {
case ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes: {
/*
* The thread shall be unblocked by the timeout operation.
*/
T_true( GetUnblock( ctx, &i ) );
T_false( GetUnblock( ctx, &i ) );
break;
}
case ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No: {
/*
* The thread shall not be unblocked by the timeout operation.
*/
T_false( GetUnblock( ctx, &i ) );
break;
}
case ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA:
break;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Check(
ScoreTqReqTimeoutPriorityInherit_Context *ctx,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority state
)
{
switch ( state ) {
case ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop: {
/*
* The priority of the owner with respect to the scheduler shall not
* change by the timeout operation.
*/
T_eq_u32( ctx->owner_priority_after, ctx->owner_priority );
break;
}
case ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower: {
/*
* The priority of the owner with respect to the scheduler shall be
* lowered to the next highest priority.
*/
T_eq_u32( ctx->owner_priority_after, ctx->owner_priority + 1 );
break;
}
case ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop: {
/*
* The owner shall not have a priority with respect to the scheduler.
*/
T_eq_u32( ctx->owner_priority_after, PRIO_INVALID );
break;
}
case ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA:
break;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Check(
ScoreTqReqTimeoutPriorityInherit_Context *ctx,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority state
)
{
switch ( state ) {
case ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop: {
/*
* The priority of the owner of the thread queue on which the owner is
* enqueued with respect to the scheduler shall not change by the timeout
* operation.
*/
T_eq_u32( ctx->owner_owner_priority_after, ctx->owner_owner_priority );
break;
}
case ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower: {
/*
* The priority of the owner of the thread queue on which the owner is
* enqueued with respect to the scheduler shall be lowered to the next
* highest priority.
*/
T_eq_u32( ctx->owner_owner_priority_after, ctx->owner_owner_priority + 1 );
break;
}
case ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Drop: {
/*
* The owner of the thread queue on which the owner is enqueued shall not
* have a priority with respect to the scheduler.
*/
T_eq_u32( ctx->owner_owner_priority_after, PRIO_INVALID );
break;
}
case ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA:
break;
}
}
static void ScoreTqReqTimeoutPriorityInherit_Setup(
ScoreTqReqTimeoutPriorityInherit_Context *ctx
)
{
ctx->request.arg = ctx;
TQReset( ctx->tq_ctx );
SetSelfPriority( PRIO_NEARLY_IDLE );
}
static void ScoreTqReqTimeoutPriorityInherit_Setup_Wrap( void *arg )
{
ScoreTqReqTimeoutPriorityInherit_Context *ctx;
ctx = arg;
ctx->Map.in_action_loop = false;
ScoreTqReqTimeoutPriorityInherit_Setup( ctx );
}
static void ScoreTqReqTimeoutPriorityInherit_Teardown(
ScoreTqReqTimeoutPriorityInherit_Context *ctx
)
{
TQReset( ctx->tq_ctx );
}
static void ScoreTqReqTimeoutPriorityInherit_Teardown_Wrap( void *arg )
{
ScoreTqReqTimeoutPriorityInherit_Context *ctx;
ctx = arg;
ctx->Map.in_action_loop = false;
ScoreTqReqTimeoutPriorityInherit_Teardown( ctx );
}
static void ScoreTqReqTimeoutPriorityInherit_Prepare(
ScoreTqReqTimeoutPriorityInherit_Context *ctx
)
{
ctx->queue_helper_surrender = false;
ctx->owner_helper_release = false;
ctx->owner_queue_helper_release = false;
ctx->owner_owner_helper_release = false;
}
static void ScoreTqReqTimeoutPriorityInherit_Action(
ScoreTqReqTimeoutPriorityInherit_Context *ctx
)
{
rtems_task_priority priority;
priority = PRIO_FLEXIBLE;
TQSetScheduler( ctx->tq_ctx, THREAD, ctx->scheduler_id, priority );
TQSend(
ctx->tq_ctx,
OWNER,
TQ_EVENT_MUTEX_A_OBTAIN | TQ_EVENT_ENQUEUE
);
if ( ctx->owner_obtain != 0 ) {
TQSend(
ctx->tq_ctx,
OWNER_OWNER,
TQ_EVENT_MUTEX_B_OBTAIN | ctx->owner_obtain
);
TQSend( ctx->tq_ctx, OWNER, ctx->owner_obtain | ctx->owner_release );
}
PrepareThread( ctx );
priority = PrepareQueue( ctx, priority );
priority = PrepareOwner( ctx, priority );
priority = PrepareOwnerQueue( ctx, priority );
PrepareOwnerOwner( ctx, priority );
TQClearDone( ctx->tq_ctx, THREAD );
switch ( ctx->wait_state ) {
case TQ_WAIT_STATE_BLOCKED:
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
THREAD,
TQ_EVENT_ENQUEUE_TIMED
);
Tick( ctx );
GetPriorities( ctx );
TQSend( ctx->tq_ctx, OWNER, TQ_EVENT_SURRENDER );
break;
case TQ_WAIT_STATE_INTEND_TO_BLOCK:
T_scheduler_set_event_handler( SchedulerBlock, ctx );
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
THREAD,
TQ_EVENT_ENQUEUE_TIMED
);
GetPriorities( ctx );
TQSend( ctx->tq_ctx, OWNER, TQ_EVENT_SURRENDER );
break;
case TQ_WAIT_STATE_READY_AGAIN:
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
THREAD,
TQ_EVENT_ENQUEUE_TIMED
);
T_scheduler_set_event_handler( SchedulerUnblock, ctx );
TQSend( ctx->tq_ctx, OWNER, TQ_EVENT_SURRENDER );
GetPriorities( ctx );
TQSend( ctx->tq_ctx, THREAD, TQ_EVENT_SURRENDER );
break;
}
TQWaitForDone( ctx->tq_ctx, THREAD );
TQWaitForExecutionStop( ctx->tq_ctx, THREAD );
}
static void ScoreTqReqTimeoutPriorityInherit_Cleanup(
ScoreTqReqTimeoutPriorityInherit_Context *ctx
)
{
if ( ctx->owner_obtain != 0 ) {
TQSend(
ctx->tq_ctx,
OWNER_OWNER,
TQ_EVENT_MUTEX_B_RELEASE | ctx->owner_release
);
if ( ctx->owner_queue_helper_release ) {
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
OWNER_QUEUE_HELPER,
ctx->owner_release
);
}
if ( ctx->owner_owner_helper_release ) {
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
OWNER_OWNER_HELPER,
TQ_EVENT_MUTEX_B_RELEASE
);
}
}
TQSend( ctx->tq_ctx, OWNER, TQ_EVENT_MUTEX_A_RELEASE );
if ( ctx->queue_helper_surrender ) {
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
QUEUE_HELPER,
TQ_EVENT_SURRENDER
);
}
if ( ctx->owner_helper_release ) {
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
OWNER_HELPER,
TQ_EVENT_MUTEX_A_RELEASE
);
}
if ( ctx->other_scheduler ) {
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
THREAD,
TQ_EVENT_MUTEX_D_RELEASE
);
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
THREAD_HELPER_A,
TQ_EVENT_MUTEX_D_RELEASE
);
if ( rtems_scheduler_get_processor_maximum() >= 3 ) {
TQSendAndWaitForExecutionStop(
ctx->tq_ctx,
THREAD_HELPER_B,
TQ_EVENT_MUTEX_D_RELEASE
);
}
}
}
static const ScoreTqReqTimeoutPriorityInherit_Entry
ScoreTqReqTimeoutPriorityInherit_Entries[] = {
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 1, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 1, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 1, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 1, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 1, 1, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_Ok,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 1, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 1, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 1, 1, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_Ok,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower },
#endif
{ 0, 0, 0, 0, 0, 0, 1, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
{ 0, 0, 0, 0, 0, 0, 1, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 1, 1, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_Ok,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#endif
{ 0, 0, 0, 0, 0, 0, 1, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
{ 0, 0, 0, 0, 0, 0, 1, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
{ 0, 0, 0, 0, 0, 0, 1, 1, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_Ok,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
{ 0, 0, 0, 0, 0, 0, 0, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
{ 0, 0, 0, 0, 0, 0, 0, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
#endif
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
{ 0, 0, 0, 0, 0, 0, 0, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
{ 0, 0, 0, 0, 0, 0, 0, 1, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Nop },
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower },
#endif
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Lower,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Lower },
{ 0, 0, 0, 0, 0, 0, 1, 1, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_Ok,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA },
#else
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Yes,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Drop },
#endif
#if !defined(RTEMS_SMP)
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, ScoreTqReqTimeoutPriorityInherit_Post_Status_NA,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_NA,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_NA }
#else
{ 0, 0, 0, 0, 0, 0, 0, 0, 0,
ScoreTqReqTimeoutPriorityInherit_Post_Status_Timeout,
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_No,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Drop,
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Drop }
#endif
};
static const uint8_t
ScoreTqReqTimeoutPriorityInherit_Map[] = {
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,
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,
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,
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,
1, 2, 2, 2, 2, 2, 2, 24, 25, 31, 24, 25, 31, 2, 2, 2, 24, 25, 31, 24, 25, 31,
2, 2, 2, 1, 1, 1, 24, 25, 31, 2, 2, 2, 24, 25, 11, 24, 25, 11, 2, 2, 2, 24,
25, 11, 24, 25, 11, 2, 2, 2, 1, 1, 1, 24, 25, 11, 2, 2, 2, 32, 33, 11, 32,
33, 11, 2, 2, 2, 32, 33, 11, 32, 33, 11, 2, 2, 2, 1, 1, 1, 32, 33, 11, 2, 2,
2, 44, 45, 11, 36, 37, 11, 2, 2, 2, 44, 45, 11, 36, 37, 11, 2, 2, 2, 1, 1, 1,
36, 37, 11, 2, 2, 2, 1, 1, 1, 29, 30, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
1, 1, 1, 29, 30, 46, 2, 2, 2, 1, 1, 1, 29, 30, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 1, 1, 1, 29, 30, 11, 2, 2, 2, 1, 1, 1, 38, 39, 11, 1, 1, 1, 1, 1, 1,
1, 1, 1, 2, 2, 2, 1, 1, 1, 38, 39, 11, 2, 2, 2, 1, 1, 1, 40, 41, 11, 1, 1, 1,
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,
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,
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,
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,
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,
31, 24, 25, 31, 2, 2, 2, 24, 25, 31, 24, 25, 31, 2, 2, 2, 1, 1, 1, 24, 25,
31, 2, 2, 2, 24, 25, 11, 24, 25, 11, 2, 2, 2, 24, 25, 11, 24, 25, 11, 2, 2,
2, 1, 1, 1, 24, 25, 11, 2, 2, 2, 32, 33, 11, 32, 33, 11, 2, 2, 2, 32, 33, 11,
32, 33, 11, 2, 2, 2, 1, 1, 1, 32, 33, 11, 2, 2, 2, 44, 45, 11, 36, 37, 11, 2,
2, 2, 44, 45, 11, 36, 37, 11, 2, 2, 2, 1, 1, 1, 36, 37, 11, 2, 2, 2, 1, 1, 1,
29, 30, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 29, 30, 46, 2, 2, 2,
1, 1, 1, 29, 30, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 29, 30, 11,
2, 2, 2, 1, 1, 1, 38, 39, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1,
38, 39, 11, 2, 2, 2, 1, 1, 1, 40, 41, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
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,
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,
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,
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,
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,
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,
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,
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,
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,
1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 29, 30, 11, 2, 2, 2, 1, 1, 1, 29,
30, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 29, 30, 11, 2, 2, 2, 1,
1, 1, 38, 39, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 38, 39, 11, 2,
2, 2, 1, 1, 1, 40, 41, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 40,
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,
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,
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,
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,
3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 5, 6, 12, 5, 6, 12, 3, 3, 3, 5, 6, 12, 5, 6,
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,
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,
10, 4, 9, 10, 4, 3, 3, 3, 0, 0, 0, 9, 10, 4, 3, 3, 3, 22, 23, 4, 20, 21, 4,
3, 3, 3, 22, 23, 4, 20, 21, 4, 3, 3, 3, 0, 0, 0, 20, 21, 4, 3, 3, 3, 0, 0, 0,
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,
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,
0, 0, 0, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 13, 14, 4,
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,
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,
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,
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,
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,
3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 5, 6, 12, 5, 6, 12, 3, 3, 3, 5, 6, 12, 5, 6,
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,
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,
10, 4, 9, 10, 4, 3, 3, 3, 0, 0, 0, 9, 10, 4, 3, 3, 3, 22, 23, 4, 20, 21, 4,
3, 3, 3, 22, 23, 4, 20, 21, 4, 3, 3, 3, 0, 0, 0, 20, 21, 4, 3, 3, 3, 0, 0, 0,
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,
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,
0, 0, 0, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 13, 14, 4,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 13, 14, 4, 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, 16, 4, 17, 18, 19, 17, 18,
19, 17, 18, 19, 17, 18, 19, 17, 18, 19, 17, 18, 19, 17, 18, 19, 0, 0, 0, 17,
18, 19, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17,
18, 4, 0, 0, 0, 17, 18, 4, 27, 28, 4, 27, 28, 4, 27, 28, 4, 27, 28, 4, 27,
28, 4, 27, 28, 4, 27, 28, 4, 0, 0, 0, 27, 28, 4, 47, 48, 4, 42, 43, 4, 34,
35, 4, 42, 43, 4, 42, 43, 4, 34, 35, 4, 34, 35, 4, 0, 0, 0, 34, 35, 4, 5, 6,
12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 0, 0, 0, 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, 0,
0, 5, 6, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9,
10, 4, 0, 0, 0, 9, 10, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 22, 23, 4, 22, 23,
4, 20, 21, 4, 20, 21, 4, 0, 0, 0, 20, 21, 4, 7, 8, 26, 0, 0, 0, 7, 8, 26, 0,
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,
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,
13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13, 14, 4, 15, 16,
4, 0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4, 0, 0, 0, 15, 16,
4, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 0,
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,
4, 0, 0, 0, 5, 6, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10,
4, 9, 10, 4, 0, 0, 0, 9, 10, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 22, 23, 4,
22, 23, 4, 20, 21, 4, 20, 21, 4, 0, 0, 0, 20, 21, 4, 5, 6, 12, 5, 6, 12, 5,
6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 0, 0, 0, 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, 0, 0, 5, 6, 4, 9, 10,
4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 0, 0, 0, 9,
10, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 20,
21, 4, 0, 0, 0, 20, 21, 4, 7, 8, 26, 0, 0, 0, 7, 8, 26, 0, 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, 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, 13, 14, 4, 0, 0,
0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13, 14, 4, 15, 16, 4, 0, 0, 0, 15,
16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4, 0, 0, 0, 15, 16, 4, 7, 8, 4, 0,
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,
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,
14, 4, 0, 0, 0, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13,
14, 4, 15, 16, 4, 0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4,
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,
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,
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,
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,
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,
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,
0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 13, 14, 4, 0, 0, 0, 13, 14, 4, 0, 0,
0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13, 14, 4, 15, 16, 4, 0, 0, 0, 15,
16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4, 0, 0, 0, 15, 16, 4, 17, 18, 19,
17, 18, 19, 17, 18, 19, 17, 18, 19, 17, 18, 19, 17, 18, 19, 17, 18, 19, 0, 0,
0, 17, 18, 19, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17, 18, 4, 17, 18,
4, 17, 18, 4, 0, 0, 0, 17, 18, 4, 27, 28, 4, 27, 28, 4, 27, 28, 4, 27, 28, 4,
27, 28, 4, 27, 28, 4, 27, 28, 4, 0, 0, 0, 27, 28, 4, 47, 48, 4, 42, 43, 4,
34, 35, 4, 42, 43, 4, 42, 43, 4, 34, 35, 4, 34, 35, 4, 0, 0, 0, 34, 35, 4, 5,
6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 0, 0, 0,
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,
0, 0, 5, 6, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9,
10, 4, 0, 0, 0, 9, 10, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 22, 23, 4, 22, 23,
4, 20, 21, 4, 20, 21, 4, 0, 0, 0, 20, 21, 4, 7, 8, 26, 0, 0, 0, 7, 8, 26, 0,
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,
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,
13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13, 14, 4, 15, 16,
4, 0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4, 0, 0, 0, 15, 16,
4, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 5, 6, 19, 0,
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,
4, 0, 0, 0, 5, 6, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10,
4, 9, 10, 4, 0, 0, 0, 9, 10, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 22, 23, 4,
22, 23, 4, 20, 21, 4, 20, 21, 4, 0, 0, 0, 20, 21, 4, 5, 6, 12, 5, 6, 12, 5,
6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 5, 6, 12, 0, 0, 0, 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, 0, 0, 5, 6, 4, 9, 10,
4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 9, 10, 4, 0, 0, 0, 9,
10, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 22, 23, 4, 22, 23, 4, 20, 21, 4, 20,
21, 4, 0, 0, 0, 20, 21, 4, 7, 8, 26, 0, 0, 0, 7, 8, 26, 0, 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, 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, 13, 14, 4, 0, 0,
0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13, 14, 4, 15, 16, 4, 0, 0, 0, 15,
16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4, 0, 0, 0, 15, 16, 4, 7, 8, 4, 0,
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,
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,
14, 4, 0, 0, 0, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13,
14, 4, 15, 16, 4, 0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4,
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,
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,
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,
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,
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,
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,
0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 7, 8, 4, 13, 14, 4, 0, 0, 0, 13, 14, 4, 0, 0,
0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 13, 14, 4, 15, 16, 4, 0, 0, 0, 15,
16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 4, 0, 0, 0, 15, 16, 4
};
static size_t ScoreTqReqTimeoutPriorityInherit_Scope(
void *arg,
char *buf,
size_t n
)
{
ScoreTqReqTimeoutPriorityInherit_Context *ctx;
ctx = arg;
if ( ctx->Map.in_action_loop ) {
return T_get_scope(
ScoreTqReqTimeoutPriorityInherit_PreDesc,
buf,
n,
ctx->Map.pcs
);
}
return 0;
}
static T_fixture ScoreTqReqTimeoutPriorityInherit_Fixture = {
.setup = ScoreTqReqTimeoutPriorityInherit_Setup_Wrap,
.stop = NULL,
.teardown = ScoreTqReqTimeoutPriorityInherit_Teardown_Wrap,
.scope = ScoreTqReqTimeoutPriorityInherit_Scope,
.initial_context = &ScoreTqReqTimeoutPriorityInherit_Instance
};
static inline ScoreTqReqTimeoutPriorityInherit_Entry
ScoreTqReqTimeoutPriorityInherit_PopEntry(
ScoreTqReqTimeoutPriorityInherit_Context *ctx
)
{
size_t index;
index = ctx->Map.index;
ctx->Map.index = index + 1;
return ScoreTqReqTimeoutPriorityInherit_Entries[
ScoreTqReqTimeoutPriorityInherit_Map[ index ]
];
}
static void ScoreTqReqTimeoutPriorityInherit_SetPreConditionStates(
ScoreTqReqTimeoutPriorityInherit_Context *ctx
)
{
ctx->Map.pcs[ 0 ] = ctx->Map.pci[ 0 ];
ctx->Map.pcs[ 1 ] = ctx->Map.pci[ 1 ];
ctx->Map.pcs[ 2 ] = ctx->Map.pci[ 2 ];
ctx->Map.pcs[ 3 ] = ctx->Map.pci[ 3 ];
ctx->Map.pcs[ 4 ] = ctx->Map.pci[ 4 ];
if ( ctx->Map.entry.Pre_OwnerQueue_NA ) {
ctx->Map.pcs[ 5 ] = ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_NA;
} else {
ctx->Map.pcs[ 5 ] = ctx->Map.pci[ 5 ];
}
if ( ctx->Map.entry.Pre_OwnerOwnerPriority_NA ) {
ctx->Map.pcs[ 6 ] = ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_NA;
} else {
ctx->Map.pcs[ 6 ] = ctx->Map.pci[ 6 ];
}
ctx->Map.pcs[ 7 ] = ctx->Map.pci[ 7 ];
}
static void ScoreTqReqTimeoutPriorityInherit_TestVariant(
ScoreTqReqTimeoutPriorityInherit_Context *ctx
)
{
ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Prepare(
ctx,
ctx->Map.pcs[ 0 ]
);
ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_Prepare(
ctx,
ctx->Map.pcs[ 1 ]
);
ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Prepare( ctx, ctx->Map.pcs[ 2 ] );
ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_Prepare(
ctx,
ctx->Map.pcs[ 3 ]
);
ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_Prepare(
ctx,
ctx->Map.pcs[ 4 ]
);
ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_Prepare(
ctx,
ctx->Map.pcs[ 5 ]
);
ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_Prepare(
ctx,
ctx->Map.pcs[ 6 ]
);
ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_Prepare(
ctx,
ctx->Map.pcs[ 7 ]
);
ScoreTqReqTimeoutPriorityInherit_Action( ctx );
ScoreTqReqTimeoutPriorityInherit_Post_Status_Check(
ctx,
ctx->Map.entry.Post_Status
);
ScoreTqReqTimeoutPriorityInherit_Post_Unblock_Check(
ctx,
ctx->Map.entry.Post_Unblock
);
ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Check(
ctx,
ctx->Map.entry.Post_OwnerPriority
);
ScoreTqReqTimeoutPriorityInherit_Post_OwnerOwnerPriority_Check(
ctx,
ctx->Map.entry.Post_OwnerOwnerPriority
);
}
static T_fixture_node ScoreTqReqTimeoutPriorityInherit_Node;
static T_remark ScoreTqReqTimeoutPriorityInherit_Remark = {
.next = NULL,
.remark = "ScoreTqReqTimeoutPriorityInherit"
};
void ScoreTqReqTimeoutPriorityInherit_Run( TQContext *tq_ctx )
{
ScoreTqReqTimeoutPriorityInherit_Context *ctx;
ctx = &ScoreTqReqTimeoutPriorityInherit_Instance;
ctx->tq_ctx = tq_ctx;
ctx = T_push_fixture(
&ScoreTqReqTimeoutPriorityInherit_Node,
&ScoreTqReqTimeoutPriorityInherit_Fixture
);
ctx->Map.in_action_loop = true;
ctx->Map.index = 0;
for (
ctx->Map.pci[ 0 ] = ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Home;
ctx->Map.pci[ 0 ] < ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_NA;
++ctx->Map.pci[ 0 ]
) {
for (
ctx->Map.pci[ 1 ] = ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_One;
ctx->Map.pci[ 1 ] < ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_NA;
++ctx->Map.pci[ 1 ]
) {
for (
ctx->Map.pci[ 2 ] = ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Only;
ctx->Map.pci[ 2 ] < ScoreTqReqTimeoutPriorityInherit_Pre_Queue_NA;
++ctx->Map.pci[ 2 ]
) {
for (
ctx->Map.pci[ 3 ] = ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_Only;
ctx->Map.pci[ 3 ] < ScoreTqReqTimeoutPriorityInherit_Pre_OwnerPriority_NA;
++ctx->Map.pci[ 3 ]
) {
for (
ctx->Map.pci[ 4 ] = ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_NotEnqueued;
ctx->Map.pci[ 4 ] < ScoreTqReqTimeoutPriorityInherit_Pre_OwnerState_NA;
++ctx->Map.pci[ 4 ]
) {
for (
ctx->Map.pci[ 5 ] = ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_Only;
ctx->Map.pci[ 5 ] < ScoreTqReqTimeoutPriorityInherit_Pre_OwnerQueue_NA;
++ctx->Map.pci[ 5 ]
) {
for (
ctx->Map.pci[ 6 ] = ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_Only;
ctx->Map.pci[ 6 ] < ScoreTqReqTimeoutPriorityInherit_Pre_OwnerOwnerPriority_NA;
++ctx->Map.pci[ 6 ]
) {
for (
ctx->Map.pci[ 7 ] = ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_Blocked;
ctx->Map.pci[ 7 ] < ScoreTqReqTimeoutPriorityInherit_Pre_WaitState_NA;
++ctx->Map.pci[ 7 ]
) {
ctx->Map.entry = ScoreTqReqTimeoutPriorityInherit_PopEntry(
ctx
);
if ( ctx->Map.entry.Skip ) {
continue;
}
ScoreTqReqTimeoutPriorityInherit_SetPreConditionStates(
ctx
);
ScoreTqReqTimeoutPriorityInherit_Prepare( ctx );
ScoreTqReqTimeoutPriorityInherit_TestVariant( ctx );
ScoreTqReqTimeoutPriorityInherit_Cleanup( ctx );
}
}
}
}
}
}
}
}
T_add_remark( &ScoreTqReqTimeoutPriorityInherit_Remark );
T_pop_fixture();
}
/** @} */