-
Jan Kiszka authored
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>
17fa132d