43 class Irq_eoi :
public Kobject_0t<Irq_eoi, L4::PROTO_EMPTY>
69 return l4_icu_control_u(
cap(), irqnum, L4_ICU_CTL_UNMASK, label, to, utcb);
117 class Irq :
public Kobject_2t<Irq, Triggerable, Rcv_endpoint, L4_PROTO_IRQ_SENDER>
143 #pragma GCC diagnostic push 144 #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 146 #pragma GCC diagnostic pop 186 {
return unmask(-1, label, timeout, utcb); }
263 public Kobject_t<Icu, Irq_eoi, L4_PROTO_IRQ,
264 Type_info::Demand_t<1> >
292 bool supports_msi()
const {
return features & F_msi; }
344 struct _Info {
l4_umword_t features, nr_irqs, nr_msis; };
368 {
return l4_icu_control_u(
cap(), irqnum, op, label, to, utcb); }
414 bind_t, unbind_t, info_t, msi_info_t, unmask_t, mask_t, set_mode_t
l4_msgtag_t wait(l4_umword_t *label, l4_timeout_t timeout=L4_IPC_NEVER, l4_utcb_t *utcb=l4_utcb())
Unmask IRQ and (open) wait for any message.
Capability type for RPC interfaces (see L4::Cap<T>).
IRQ multiplexer for shared IRQs.
Do not use irq as wakeup source.
l4_msgtag_t l4_irq_trigger_u(l4_cap_idx_t irq, l4_utcb_t *utcb) L4_NOTHROW
Trigger.
l4_msgtag_t unbind(unsigned irqnum, L4::Cap< Triggerable > irq, l4_utcb_t *utcb=l4_utcb())
Remove binding of an interrupt line from the interrupt controller object.
Info to use for a specific MSI.
l4_msgtag_t attach(l4_umword_t label, Cap< Thread > const &thread=Cap< Thread >::Invalid, l4_utcb_t *utcb=l4_utcb())
Attach a thread to this interrupt.
l4_msgtag_t detach(l4_utcb_t *utcb=l4_utcb())
Detach from this interrupt.
L4 low-level kernel interface.
The C++ Receive endpoint interface.
l4_msgtag_t l4_icu_bind_u(l4_cap_idx_t icu, unsigned irqnum, l4_cap_idx_t irq, l4_utcb_t *utcb) L4_NOTHROW
Bind an interrupt line of an interrupt controller to an interrupt object.
l4_msgtag_t l4_irq_receive_u(l4_cap_idx_t irq, l4_timeout_t timeout, l4_utcb_t *utcb) L4_NOTHROW
Unmask and wait for this IRQ.
#define L4_INLINE_RPC_OP(op, res, name, args, attr...)
Define an inline RPC call with specific opcode (type and callable).
Info structure for an ICU.
Interface for sending an acknowledge message to an object.
l4_msgtag_t l4_irq_mux_chain_u(l4_cap_idx_t irq, l4_cap_idx_t slave, l4_utcb_t *utcb) L4_NOTHROW
Attach an IRQ to this multiplexer.
RPC attribute for a send-only RPC.
struct l4_utcb_t l4_utcb_t
Opaque type for the UTCB.
#define L4_IPC_NEVER
never timeout
L4::Cap related definitions.
l4_msgtag_t unmask(l4_utcb_t *utcb=l4_utcb())
Unmask IRQ.
l4_msgtag_t receive(l4_timeout_t timeout=L4_IPC_NEVER, l4_utcb_t *utcb=l4_utcb())
Unmask and wait for this IRQ.
l4_msgtag_t l4_icu_unbind_u(l4_cap_idx_t icu, unsigned irqnum, l4_cap_idx_t irq, l4_utcb_t *utcb) L4_NOTHROW
Remove binding of an interrupt line from the interrupt controller object.
This class encapsulates information about an ICU.
l4_msgtag_t trigger(l4_utcb_t *utcb=l4_utcb())
Trigger.
l4_msgtag_t l4_irq_detach_u(l4_cap_idx_t irq, l4_utcb_t *utcb) L4_NOTHROW
Detach from this interrupt.
l4_msgtag_t bind(unsigned irqnum, L4::Cap< Triggerable > irq, l4_utcb_t *utcb=l4_utcb())
Bind an interrupt line of an interrupt controller to an interrupt object.
List of RPCs typically used for kernel interfaces.
Flag to denote that the IRQ is actually an MSI.
l4_cap_idx_t cap() const
Return capability selector.
unsigned long l4_umword_t
Unsigned machine word.
Helper class to create an L4Re interface class that is derived from two base classes (see L4::Kobject...
Interface Definition Language.
l4_msgtag_t l4_icu_set_mode_u(l4_cap_idx_t icu, unsigned irqnum, l4_umword_t mode, l4_utcb_t *utcb) L4_NOTHROW
Set interrupt mode.
l4_msgtag_t info(l4_icu_info_t *info, l4_utcb_t *utcb=l4_utcb())
Get information about the capabilities of the ICU.
l4_utcb_t * l4_utcb(void) L4_NOTHROW L4_PURE
Get the UTCB address.
l4_cap_idx_t cap() const
Return capability selector.
Helper class to create an L4Re interface class that is derived from a single base class...
l4_msgtag_t l4_icu_info_u(l4_cap_idx_t icu, l4_icu_info_t *info, l4_utcb_t *utcb) L4_NOTHROW
Get information about the capabilities of the ICU.
unsigned long long l4_uint64_t
Unsigned 64bit value.
l4_msgtag_t set_mode(unsigned irqnum, l4_umword_t mode, l4_utcb_t *utcb=l4_utcb())
Set interrupt mode.
C++ interface for capabilities.
Message tag data structure.
l4_msgtag_t unmask(unsigned irqnum, l4_umword_t *label=0, l4_timeout_t to=L4_IPC_NEVER, l4_utcb_t *utcb=l4_utcb())
Acknowledge the given interrupt line.
l4_msgtag_t l4_icu_mask_u(l4_cap_idx_t icu, unsigned irqnum, l4_umword_t *label, l4_timeout_t to, l4_utcb_t *utcb) L4_NOTHROW
Mask an IRQ line.
#define L4_DEPRECATED(s)
Mark symbol deprecated.
l4_msgtag_t chain(Cap< Triggerable > const &slave, l4_utcb_t *utcb=l4_utcb())
Attach an IRQ to this multiplexer.
l4_msgtag_t l4_irq_attach_u(l4_cap_idx_t irq, l4_umword_t label, l4_cap_idx_t thread, l4_utcb_t *utcb) L4_NOTHROW
Attach a thread to this interrupt.
#define L4_RPC_NF_OP(op, res, name, args...)
Define an RPC call type with specific opcode (the type only, no callable).
l4_msgtag_t mask(unsigned irqnum, l4_umword_t *label=0, l4_timeout_t to=L4_IPC_NEVER, l4_utcb_t *utcb=l4_utcb())
Mask an IRQ line.
Interface that allows an object to be triggered by some source.