|
|
void pfxintr_unmask(ms_intr_dist_t *idtp)
For example, a particular platform may not be able to mask individual slots, perhaps because it groups slots into priority levels and masks based on priority. MSOP_INTR_MASK might then implicitly mask slots 4 and 5 when requested to mask slot 3. If subsequently asked to mask slot 5, it would do nothing, since slot 5 is already masked, but would remember the request. If MSOP_INTR_MASK were then called for slot 3, it must not actually unmask slot 3, because that would unmask slot 5, which still has a mask operation pending. When slot 5 is unmasked by a separate MSOP_INTR_UNMASK, slots 3 and 4 are unmasked as well.
MSOP_INTR_MASK (whether explicit or implicit) and MSOP_INTR_UNMASK for a given interrupt slot are not required to nest. That is, MSOP_INTR_UNMASK can assume that the specified slot currently has exactly one mask pending and can be (logically) unmapped.
MSOP_INTR_UNMASK must not be called if MSI_NONMASKABLE is set for this interrupt slot.
Interrupts are disabled on the CPU when MSOP_INTR_UNMASK is called.