27 #include <l4/cxx/utils> 52 L4::Type_info::Demand_t<1> >
58 Config_queue *queues()
const 72 out_notify, in_notify, to);
80 out_notify, in_notify, to);
87 cxx::write_now(&cmd, command);
102 while (cxx::access_once(&cmd));
208 register_ds_t, device_config_t,
209 device_notification_irq_t>
Rpcs;
Timeout during receive operation.
Capability type for RPC interfaces (see L4::Cap<T>).
l4_timeout_t l4_timeout(l4_timeout_s snd, l4_timeout_s rcv) L4_NOTHROW
Combine send and receive timeout in a timeout.
long device_config(L4::Ipc::Out< L4::Cap< L4Re::Dataspace > > config_ds, l4_addr_t *ds_offset)
Get the dataspace with the L4virtio configuration page.
Standard list of RPCs of an interface.
l4_umword_t l4_ipc_error(l4_msgtag_t tag, l4_utcb_t *utcb) L4_NOTHROW
Get the error code for an object invocation.
l4virtio_config_queue_t * l4virtio_config_queues(l4virtio_config_hdr_t const *cfg)
Get the pointer to the first queue config.
Mark an argument as a output value in an RPC signature.
L4::Cap related definitions.
long config_queue(unsigned queue)
Trigger queue configuration of the given queue.
long set_status(unsigned status)
Write the VIRTIO status register.
long register_ds(L4::Ipc::Cap< L4Re::Dataspace > ds_cap, l4_uint64_t base, l4_umword_t offset, l4_umword_t size)
Register a shared data space with VIRTIO host.
l4_msgtag_t trigger(l4_utcb_t *utcb=l4_utcb())
Trigger.
Object currently busy, try later.
void * l4virtio_device_config(l4virtio_config_hdr_t const *cfg)
Get the pointer to the device configuration.
Basic timeout specification.
IPC interface for virtio over L4 IPC.
#define L4_INLINE_RPC(res, name, args, attr...)
Define an inline RPC call (type and callable).
L4-VIRTIO config header, provided in shared data space.
l4_cap_idx_t cap() const
Return capability selector.
unsigned long l4_umword_t
Unsigned machine word.
#define L4_IPC_TIMEOUT_NEVER
never timeout
l4_utcb_t * l4_utcb(void) L4_NOTHROW L4_PURE
Get the UTCB address.
Queue configuration entry.
Helper class to create an L4Re interface class that is derived from a single base class...
l4_msgtag_t l4_ipc_receive(l4_cap_idx_t object, l4_utcb_t *utcb, l4_timeout_t timeout) L4_NOTHROW
Wait for a message from a specific source.
unsigned long long l4_uint64_t
Unsigned 64bit value.
L4-VIRTIO Transport C++ API.
#define L4_IPC_TIMEOUT_0
Timeout constants.
C++ interface for capabilities.
long device_notification_irq(unsigned index, L4::Ipc::Out< L4::Cap< L4::Triggerable > > irq)
Get the notification interrupt corresponding to the given index.
unsigned long l4_addr_t
Address type.
long register_iface(L4::Ipc::Cap< L4::Triggerable > guest_irq, L4::Ipc::Out< L4::Cap< L4::Triggerable > > host_irq, L4::Ipc::Out< L4::Cap< L4Re::Dataspace > > config_ds)
Register client to the L4-VIRTIO device.