• Philippe Gerum's avatar
    cobalt/pipe: drop dependency on APCs · c8f865c5
    Philippe Gerum authored
    This patch starts a series aiming at dropping the (functionally
    redundant) APC interface entirely.
    
    APCs are a relic from the Dark Ages, with no upside compared to open
    coded requests triggering virtual/synthetic IRQs to be handled by the
    root domain. As a matter of fact, an APC does run as a client handler
    of a synthetic IRQ under the hood.
    
    With this change, all APCs will not be multiplexed over a single
    synthetic IRQ anymore but each deferred procedure is going to be
    assigned its own synthetic IRQ channel, which is hardly a problem
    since we only have a couple of APCs to deal with, much fewer than the
    number of synthetic IRQs available to us.
    
    As a result, /proc/xenomai/apc will not be available for inspecting
    the trigger count of synthetic interrupts used by the core
    anymore. Since the I-pipe is on its way out, having this obscure
    feature dropped in this context seems acceptable. However, the related
    information will still be available to Dovetail-based builds directly
    from /proc/interrupts, as synthetic IRQs are (mostly) regular
    interrupts there.
    
    Start with using a virtual/synthetic IRQ for kicking the wakeup
    procedure for message pipes, dropping the dependency on APCs.
    Signed-off-by: Philippe Gerum's avatarPhilippe Gerum <rpm@xenomai.org>
    Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
    c8f865c5
pipe.c 26.1 KB