| 75 | +---------------------------------------------------------------------------------------------------------------------*/ |
| 76 | |
| 77 | bool ThreadPriorityTestCase::run_() const |
| 78 | { |
| 79 | const auto allocatedMemory = mallinfo().uordblks; |
| 80 | |
| 81 | for (const auto& phase : priorityTestPhases) |
| 82 | { |
| 83 | { |
| 84 | SequenceAsserter sequenceAsserter; |
| 85 | |
| 86 | std::array<DynamicThread, totalThreads> threads |
| 87 | {{ |
| 88 | makeTestThread(phase.first[phase.second[0]], sequenceAsserter), |
| 89 | makeTestThread(phase.first[phase.second[1]], sequenceAsserter), |
| 90 | makeTestThread(phase.first[phase.second[2]], sequenceAsserter), |
| 91 | makeTestThread(phase.first[phase.second[3]], sequenceAsserter), |
| 92 | makeTestThread(phase.first[phase.second[4]], sequenceAsserter), |
| 93 | makeTestThread(phase.first[phase.second[5]], sequenceAsserter), |
| 94 | makeTestThread(phase.first[phase.second[6]], sequenceAsserter), |
| 95 | makeTestThread(phase.first[phase.second[7]], sequenceAsserter), |
| 96 | }}; |
| 97 | |
| 98 | { |
| 99 | const InterruptMaskingLock interruptMaskingLock; |
| 100 | |
| 101 | for (auto& thread : threads) |
| 102 | thread.start(); |
| 103 | } |
| 104 | |
| 105 | for (auto& thread : threads) |
| 106 | thread.join(); |
| 107 | |
| 108 | if (sequenceAsserter.assertSequence(totalThreads) == false) |
| 109 | return false; |
| 110 | } |
| 111 | |
| 112 | if (mallinfo().uordblks != allocatedMemory) // dynamic memory must be deallocated after each test phase |
| 113 | return false; |
| 114 | } |
| 115 | |
| 116 | return true; |
| 117 | } |
| 118 | |
| 119 | } // namespace test |
| 120 |
nothing calls this directly
no test coverage detected