StuBS
|
Handling for the "killer"-IPI, that is a message indicating that a thread should be terminated. More...
#include <thread/assassin.h>
Public Member Functions | |
void | hire () |
Configure the Assassin. More... | |
bool | prologue () |
Interrupt Prologue. More... | |
virtual void | epilogue () |
Interrupt Epilogue. More... | |
Public Member Functions inherited from Gate | |
Gate () | |
Constructor. | |
virtual | ~Gate () |
Destructor. More... | |
virtual bool | prologue ()=0 |
Device-specific interrupt handling routine that is executed immediately after the interrupt occurs (asynchronously). More... | |
virtual void | epilogue () |
Possibly delayed, synchronously executed Device-specific interrupt handling routine. More... | |
Handling for the "killer"-IPI, that is a message indicating that a thread should be terminated.
Only required for MPStuBS.
If one thread wants to terminate another thread by calling Scheduler::kill(), and the thread to be killed is currently being executed on another CPU, this CPU needs to be notified that the active process is to be killed. MPStuBS relies on an inter-processor interrupt (IPI) for this purpose. The class Assassin shall handle the IPI by removing the active thread from scheduling and issue a reschedule iff the active thread has a set kill flag.
void Assassin::hire | ( | ) |
Configure the Assassin.
Setup the plugbox, such that the assassin will be executed once the corresponding IPI is issued.
|
virtual |
Interrupt Prologue.
There is nothing to do in the prologue except requesting an epilogue.
true
to request an epilogue Implements Gate.
|
virtual |
Interrupt Epilogue.
The epilogue now should check the dying flag of the currently running thread and, if set, issue a rescheduling.
Reimplemented from Gate.