rtdm/nrtsig: Move inband work description off the stack
Unlike the I-pipe, Dovetail does not copy the work descriptor but
merely hands over the request to the common irq_work() mechanism. We
must guarantee that such descriptor lives in a portion of memory which
won't go stale until the handler has run, which by design can only
happen once the calling out-of-band context unwinds.
Therefore, we have to move the non-rt signal descriptors off the
stack. When it comes to the basic non-RT signal, the rtdm_nrtsig_t
descriptor itself is a proper place to host the inband work descriptor
which carries out the work under the hood.
When a task work needs to be scheduled, we enqueue it into global,
lock-protected list, trigger a common lostage handler, and let that
transfer the item to schedule_work.
Based on original patch by Philippe Gerum, avoiding xnmalloc in RT code
paths.
Signed-off-by:
Jan Kiszka <jan.kiszka@siemens.com>
Please register or sign in to comment