diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-10-13 09:48:49 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-10-13 09:56:26 +0200 |
commit | ada9035dbe1acc94edf5b938b6b3a2dcd3f8ed83 (patch) | |
tree | f6e57d7fac06e80feebb334fd85eecee0e81aa6d | |
parent | 53088d03fe52b33fd89b647ea4af0dc5fade5448 (diff) |
testsuites/validation/tr-tq-timeout-priority-inherit.c
-rw-r--r-- | testsuites/validation/tr-tq-timeout-priority-inherit.c | 412 | ||||
-rw-r--r-- | testsuites/validation/tr-tq-timeout-priority-inherit.h | 16 |
2 files changed, 226 insertions, 202 deletions
diff --git a/testsuites/validation/tr-tq-timeout-priority-inherit.c b/testsuites/validation/tr-tq-timeout-priority-inherit.c index 6334cea5ca..6e744ba7d9 100644 --- a/testsuites/validation/tr-tq-timeout-priority-inherit.c +++ b/testsuites/validation/tr-tq-timeout-priority-inherit.c @@ -71,8 +71,8 @@ typedef struct { uint32_t Skip : 1; - uint32_t Pre_Scheduler_NA : 1; - uint32_t Pre_OtherScheduler_NA : 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; @@ -246,15 +246,15 @@ typedef struct { static ScoreTqReqTimeoutPriorityInherit_Context ScoreTqReqTimeoutPriorityInherit_Instance; -static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_Scheduler[] = { +static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_HomeScheduler[] = { "Home", "Helping", "NA" }; -static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_OtherScheduler[] = { - "Yes", - "No", +static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_EligibleScheduler[] = { + "One", + "More", "NA" }; @@ -302,8 +302,8 @@ static const char * const ScoreTqReqTimeoutPriorityInherit_PreDesc_WaitState[] = }; static const char * const * const ScoreTqReqTimeoutPriorityInherit_PreDesc[] = { - ScoreTqReqTimeoutPriorityInherit_PreDesc_Scheduler, - ScoreTqReqTimeoutPriorityInherit_PreDesc_OtherScheduler, + ScoreTqReqTimeoutPriorityInherit_PreDesc_HomeScheduler, + ScoreTqReqTimeoutPriorityInherit_PreDesc_EligibleScheduler, ScoreTqReqTimeoutPriorityInherit_PreDesc_Queue, ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerPriority, ScoreTqReqTimeoutPriorityInherit_PreDesc_OwnerState, @@ -317,7 +317,9 @@ typedef ScoreTqReqTimeoutPriorityInherit_Context Context; #define THREAD TQ_BLOCKER_A -#define THREAD_HELPER TQ_HELPER_B +#define THREAD_HELPER_A TQ_HELPER_B + +#define THREAD_HELPER_B TQ_HELPER_C #define QUEUE_HELPER TQ_BLOCKER_B @@ -444,23 +446,37 @@ static void PrepareThread( const Context *ctx ) other_scheduler_id = SCHEDULER_B_ID; } - TQSetScheduler( - ctx->tq_ctx, - THREAD_HELPER, - other_scheduler_id, - PRIO_NEARLY_IDLE - 1 - ); - 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, + 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 + ); + } } } @@ -677,13 +693,13 @@ static void PrepareOwnerOwner( Context *ctx, rtems_task_priority priority ) } } -static void ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler_Prepare( - ScoreTqReqTimeoutPriorityInherit_Context *ctx, - ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler state +static void ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Prepare( + ScoreTqReqTimeoutPriorityInherit_Context *ctx, + ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler state ) { switch ( state ) { - case ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler_Home: { + case ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Home: { /* * While the home scheduler of the thread is the home scheduler of the * thread queue owner. @@ -692,7 +708,7 @@ static void ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler_Prepare( break; } - case ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler_Helping: { + case ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Helping: { /* * While the home scheduler of the thread is a helping scheduler of the * thread queue owner. @@ -701,34 +717,34 @@ static void ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler_Prepare( break; } - case ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler_NA: + case ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_NA: break; } } -static void ScoreTqReqTimeoutPriorityInherit_Pre_OtherScheduler_Prepare( - ScoreTqReqTimeoutPriorityInherit_Context *ctx, - ScoreTqReqTimeoutPriorityInherit_Pre_OtherScheduler state +static void ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_Prepare( + ScoreTqReqTimeoutPriorityInherit_Context *ctx, + ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler state ) { switch ( state ) { - case ScoreTqReqTimeoutPriorityInherit_Pre_OtherScheduler_Yes: { + case ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_One: { /* - * While the thread has at least two eligible scheduler. + * While the thread has exactly one eligible scheduler. */ - ctx->other_scheduler = true; + ctx->other_scheduler = false; break; } - case ScoreTqReqTimeoutPriorityInherit_Pre_OtherScheduler_No: { + case ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_More: { /* - * While the thread has exactly one eligible scheduler. + * While the thread has at least two eligible scheduler. */ - ctx->other_scheduler = false; + ctx->other_scheduler = true; break; } - case ScoreTqReqTimeoutPriorityInherit_Pre_OtherScheduler_NA: + case ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_NA: break; } } @@ -1305,9 +1321,17 @@ static void ScoreTqReqTimeoutPriorityInherit_Cleanup( ); TQSendAndWaitForExecutionStop( ctx->tq_ctx, - THREAD_HELPER, + 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 + ); + } } } @@ -1328,21 +1352,21 @@ ScoreTqReqTimeoutPriorityInherit_Entries[] = { 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 +#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 }, -#endif +#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, @@ -1572,6 +1596,16 @@ ScoreTqReqTimeoutPriorityInherit_Entries[] = { 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, @@ -1583,16 +1617,6 @@ ScoreTqReqTimeoutPriorityInherit_Entries[] = { ScoreTqReqTimeoutPriorityInherit_Post_OwnerPriority_Nop, 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_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, @@ -1761,167 +1785,167 @@ ScoreTqReqTimeoutPriorityInherit_Entries[] = { 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, 0, 0, 0, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, - 0, 2, 2, 2, 2, 2, 2, 5, 6, 12, 5, 6, 12, 2, 2, 2, 5, 6, 12, 5, 6, 12, 2, 2, - 2, 0, 0, 0, 5, 6, 12, 2, 2, 2, 5, 6, 4, 5, 6, 4, 2, 2, 2, 5, 6, 4, 5, 6, 4, - 2, 2, 2, 0, 0, 0, 5, 6, 4, 2, 2, 2, 9, 10, 4, 9, 10, 4, 2, 2, 2, 9, 10, 4, 9, - 10, 4, 2, 2, 2, 0, 0, 0, 9, 10, 4, 2, 2, 2, 22, 23, 4, 20, 21, 4, 2, 2, 2, - 22, 23, 4, 20, 21, 4, 2, 2, 2, 0, 0, 0, 20, 21, 4, 2, 2, 2, 0, 0, 0, 7, 8, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 7, 8, 24, 2, 2, 2, 0, 0, 0, - 7, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 7, 8, 4, 2, 2, 2, 0, 0, - 0, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 13, 14, 4, 2, 2, - 2, 0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 15, 16, - 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, - 0, 0, 2, 2, 2, 2, 2, 2, 5, 6, 12, 5, 6, 12, 2, 2, 2, 5, 6, 12, 5, 6, 12, 2, - 2, 2, 0, 0, 0, 5, 6, 12, 2, 2, 2, 5, 6, 4, 5, 6, 4, 2, 2, 2, 5, 6, 4, 5, 6, - 4, 2, 2, 2, 0, 0, 0, 5, 6, 4, 2, 2, 2, 9, 10, 4, 9, 10, 4, 2, 2, 2, 9, 10, 4, - 9, 10, 4, 2, 2, 2, 0, 0, 0, 9, 10, 4, 2, 2, 2, 22, 23, 4, 20, 21, 4, 2, 2, 2, - 22, 23, 4, 20, 21, 4, 2, 2, 2, 0, 0, 0, 20, 21, 4, 2, 2, 2, 0, 0, 0, 7, 8, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 7, 8, 24, 2, 2, 2, 0, 0, 0, - 7, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 7, 8, 4, 2, 2, 2, 0, 0, - 0, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 13, 14, 4, 2, 2, - 2, 0, 0, 0, 15, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 15, 16, - 4, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, - 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, - 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, - 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, - 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 2, 2, 0, 0, 0, 7, 8, 4, 2, 2, 2, 0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 2, 2, 0, 0, 0, 7, 8, 4, 2, 2, 2, 0, 0, 0, 13, 14, 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 13, 14, 4, 2, 2, 2, 0, 0, 0, 15, 16, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 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, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 25, - 26, 31, 25, 26, 31, 3, 3, 3, 25, 26, 31, 25, 26, 31, 3, 3, 3, 1, 1, 1, 25, - 26, 31, 3, 3, 3, 25, 26, 11, 25, 26, 11, 3, 3, 3, 25, 26, 11, 25, 26, 11, 3, - 3, 3, 1, 1, 1, 25, 26, 11, 3, 3, 3, 32, 33, 11, 32, 33, 11, 3, 3, 3, 32, 33, - 11, 32, 33, 11, 3, 3, 3, 1, 1, 1, 32, 33, 11, 3, 3, 3, 44, 45, 11, 36, 37, - 11, 3, 3, 3, 44, 45, 11, 36, 37, 11, 3, 3, 3, 1, 1, 1, 36, 37, 11, 3, 3, 3, - 1, 1, 1, 29, 30, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 29, 30, 46, - 3, 3, 3, 1, 1, 1, 29, 30, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, - 29, 30, 11, 3, 3, 3, 1, 1, 1, 38, 39, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, - 1, 1, 1, 38, 39, 11, 3, 3, 3, 1, 1, 1, 40, 41, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 3, 3, 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, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 25, 26, 31, 25, 26, 31, 3, - 3, 3, 25, 26, 31, 25, 26, 31, 3, 3, 3, 1, 1, 1, 25, 26, 31, 3, 3, 3, 25, 26, - 11, 25, 26, 11, 3, 3, 3, 25, 26, 11, 25, 26, 11, 3, 3, 3, 1, 1, 1, 25, 26, - 11, 3, 3, 3, 32, 33, 11, 32, 33, 11, 3, 3, 3, 32, 33, 11, 32, 33, 11, 3, 3, - 3, 1, 1, 1, 32, 33, 11, 3, 3, 3, 44, 45, 11, 36, 37, 11, 3, 3, 3, 44, 45, 11, - 36, 37, 11, 3, 3, 3, 1, 1, 1, 36, 37, 11, 3, 3, 3, 1, 1, 1, 29, 30, 46, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 29, 30, 46, 3, 3, 3, 1, 1, 1, 29, 30, - 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 29, 30, 11, 3, 3, 3, 1, 1, - 1, 38, 39, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 38, 39, 11, 3, 3, - 3, 1, 1, 1, 40, 41, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 40, 41, - 11, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, - 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, - 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, - 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, - 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 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, 3, 3, 3, 1, 1, 1, 29, 30, 11, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 3, 3, 1, 1, 1, 29, 30, 11, 3, 3, 3, 1, 1, 1, 29, 30, 11, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 29, 30, 11, 3, 3, 3, 1, 1, 1, 38, 39, 11, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 38, 39, 11, 3, 3, 3, 1, 1, 1, - 40, 41, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 40, 41, 11, 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, 24, 0, 0, - 0, 7, 8, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 24, 0, 0, 0, 7, 8, 24, 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, + 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, 24, 0, 0, 0, 7, 8, 24, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 24, 0, 0, 0, 7, 8, 24, 7, 8, 4, 0, 0, 0, 7, 8, + 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, + 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, 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, 24, - 0, 0, 0, 7, 8, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 24, 0, 0, 0, 7, 8, 24, 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, + 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, 24, 0, 0, 0, 7, 8, 24, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 24, 0, 0, 0, 7, 8, 24, 7, 8, 4, 0, 0, 0, 7, 8, + 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, + 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, 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 + 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( @@ -1997,11 +2021,11 @@ static void ScoreTqReqTimeoutPriorityInherit_TestVariant( ScoreTqReqTimeoutPriorityInherit_Context *ctx ) { - ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler_Prepare( + ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Prepare( ctx, ctx->Map.pcs[ 0 ] ); - ScoreTqReqTimeoutPriorityInherit_Pre_OtherScheduler_Prepare( + ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_Prepare( ctx, ctx->Map.pcs[ 1 ] ); @@ -2062,13 +2086,13 @@ void ScoreTqReqTimeoutPriorityInherit_Run( TQContext *tq_ctx ) ctx->Map.index = 0; for ( - ctx->Map.pci[ 0 ] = ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler_Home; - ctx->Map.pci[ 0 ] < ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler_NA; + 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_OtherScheduler_Yes; - ctx->Map.pci[ 1 ] < ScoreTqReqTimeoutPriorityInherit_Pre_OtherScheduler_NA; + ctx->Map.pci[ 1 ] = ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_One; + ctx->Map.pci[ 1 ] < ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_NA; ++ctx->Map.pci[ 1 ] ) { for ( diff --git a/testsuites/validation/tr-tq-timeout-priority-inherit.h b/testsuites/validation/tr-tq-timeout-priority-inherit.h index 01b19bb0b2..a75665f659 100644 --- a/testsuites/validation/tr-tq-timeout-priority-inherit.h +++ b/testsuites/validation/tr-tq-timeout-priority-inherit.h @@ -64,16 +64,16 @@ extern "C" { */ typedef enum { - ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler_Home, - ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler_Helping, - ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler_NA -} ScoreTqReqTimeoutPriorityInherit_Pre_Scheduler; + ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Home, + ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_Helping, + ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler_NA +} ScoreTqReqTimeoutPriorityInherit_Pre_HomeScheduler; typedef enum { - ScoreTqReqTimeoutPriorityInherit_Pre_OtherScheduler_Yes, - ScoreTqReqTimeoutPriorityInherit_Pre_OtherScheduler_No, - ScoreTqReqTimeoutPriorityInherit_Pre_OtherScheduler_NA -} ScoreTqReqTimeoutPriorityInherit_Pre_OtherScheduler; + ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_One, + ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_More, + ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler_NA +} ScoreTqReqTimeoutPriorityInherit_Pre_EligibleScheduler; typedef enum { ScoreTqReqTimeoutPriorityInherit_Pre_Queue_Only, |