Date: Sat, 26 Jul 2014 20:13:08 +0200 From: Martin Husemann <[email protected]>
Why not extend softints so that they (optionally) provide a sleepable context? Softints are a relatively scarce resource compared to the four words of memory that tasks occupy. Setting softints up and tearing them down is an expensive operation unlike task_init, task_destroy. Can't cancel a softint; can't wait for completion on a softint without tearing it down; can't drain all softints. Of course, softints are cheaper to schedule: softint_schedule requires zero interprocessor synchronization, whereas task_schedule involves atomic_cas and mutex_enter (though it tries to touch only CPU-local memory, unless there's contention on the task itself).
