Tests SMP-specific scheduler behaviour.
More...
|
enum | WorkerIndex {
WORKER_A
, WORKER_B
, WORKER_C
, WORKER_COUNT
,
WORKER_A
, WORKER_B
, WORKER_C
, WORKER_COUNT
} |
|
|
| T_TEST_CASE_FIXTURE (ScoreSchedSmpValSmp, &ScoreSchedSmpValSmp_Fixture) |
|
Tests SMP-specific scheduler behaviour.
This test case performs the following actions:
- Construct a system state in which a sticky thread is blocked while an idle thread executes on behalf of the thread.
- Block the sticky worker A while it uses an idle thread in the home scheduler.
- Clean up all used resources.
- Construct a system state in which a thread is preempted while it is blocked.
- Block worker A and preempt it before the withdraw node operations are performed for worker A.
- Clean up all used resources.
- Construct a system state in which a thread is rescheduled while it is not scheduled on another scheduler.
- Reschedule worker A by the home scheduler while worker A is not scheduled on another scheduler.
- Clean up all used resources.
- Construct a system state in which an ask for help request is cancelled while it is processed on another processor.
- Unblock worker A. It cannot be scheduled on its home scheduler. Intercept the ask for help request. Block the worker A. This will cancel the ask for help request. Remove the request while the other processor tries to cancel the request.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is already scheduled during a block operation.
- Block the runner thread while the owner thread of the highest priority ready node is already scheduled.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is blocked during a block operation.
- Block the runner thread while the owner thread of the highest priority ready node is blocked.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is already scheduled during a set affinity operation.
- Set the affinity of the runner thread while the owner thread of the highest priority ready node is already scheduled.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is already scheduled during a set affinity operation while a sticky node is involved.
- Set the affinity of the runner thread while the owner thread of the highest priority ready node is already scheduled.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is blocked during a set affinity operation.
- Set the affinity of the runner thread while the owner thread of the highest priority ready node is blocked.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is blocked during a set affinity operation while a sticky node is involved.
- Set the affinity of the runner thread while the owner thread of the highest priority ready node is blocked.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is already scheduled during a set priority operation.
- Set the priority of the runner thread while the owner thread of the highest priority ready node is already scheduled.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is already scheduled during a set priority operation while a sticky node is involved.
- Set the priority of the runner thread while the owner thread of the highest priority ready node is already scheduled.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is blocked during a set priority operation.
- Set the priority of the runner thread while the owner thread of the highest priority ready node is blocked.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is already scheduled during a yield operation.
- Yield while the owner thread of the highest priority ready node is already scheduled.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is already scheduled during a yield operation while a sticky node is involved.
- Yield while the owner thread of the highest priority ready node is already scheduled.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is blocked during a yield operation.
- Yield while the owner thread of the highest priority ready node is blocked.
- Clean up all used resources.
- Construct a system state in which a scheduler tries to schedule a node those owner thread is blocked during a yield operation while a sticky node is involved.
- Yield while the owner thread of the highest priority ready node is blocked.
- Clean up all used resources.
- Create three worker threads and a mutex. Use the mutex and the worker to check that a not scheduled thread does not get removed from the set of ready threads of a scheduler when a help request is reconsidered.
- Prevent that worker B can perform a post-switch cleanup.
- Give worker C a lower priority than worker B. Worker B will try to finish the thread dispatch by doing a post-switch cleanup. The post-switch cleanup cannot progress since the runner owns the thread state lock. Wait until the other processor waits on the thread state lock of worker B.
- Give worker C a higher priority than worker B. Let worker B do its post-switch cleanup which will carry out the reconsider help requests for a not scheduled thread.
- Clean up all used resources.