Skip to content
  • Jan Kiszka's avatar
    rtdm/nrtsig: Move inband work description off the stack · 17fa132d
    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: default avatarJan Kiszka <jan.kiszka@siemens.com>
    17fa132d