Hi!
Instructions
senduipi <index> - send a user IPI to a target task based on the UITT index.
clui - Mask user interrupts by clearing UIF (User Interrupt Flag).
stui - Unmask user interrupts by setting UIF.
testui - Test current value of UIF.
uiret - return from a user interrupt handler.
Are other CPU vendors allowed to implement compatible instructions?
If not, we should probably have VDSO entries so kernel can abstract differences between CPUs.
Untrusted processes
The current implementation expects only trusted and cooperating processes to communicate using user interrupts. Coordination is expected between processes for a connection teardown. In situations where coordination doesn't happen (say, due to abrupt process exit), the kernel would end up keeping shared resources (like UPID) allocated to avoid faults.
Keeping resources allocated after process exit is a no-no.
Best regards, Pavel