Hi Guys,
I called ddi_taskq_dispatch with DDI_NOSLEEP in the HIGH PIL
context and got a panic "dispatcher invoked from high-level
interrupt handler".
But the man page of taskq(9F) doesn't mention that the high PIL
context is forbidden.
CONTEXT
All functions may be called from the user or kernel con-
texts.
Addtionally, the ddi_taskq_dispatch function may be called
from the interrupt context only if the DDI_NOSLEEP flag is
set.
I want to know whether it is an expected behavior, or it is an
implementation flaw/bug of existing taskq DDI?
Back to my usage case, I created an API whose consumer could
be a device driver or a kernel misc module.
This API might be called by an high PIL interrupt context, which
will cause the panic issue I mentioned above. In this case, if I
can find a way to create a separate kernel thread safely, then I
could get less limitations for my API usage.
In my previous understanding, taskq could meet my requirements,
but if it couldn't, do we have other ways to create a separate kernel
context in the high PIL interrupt context? You know, my code is
not existing in a device driver, soft interrupt is not a good choice
in this case.
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code