History log of /seL4-camkes-master/projects/camkes-tool/libsel4camkes/include/camkes/virtqueue.h
Revision Date Author Comments
# b9e3ebe8 21-May-2020 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4camkes: Set virtqueue size on creation

The queue size of a virtqueue is how many entries its rings and
descriptor table have.


# d581963f 11-Feb-2020 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4camkes,virtqueue: Link channel ID to name

Giving each channel a name based on the interface name allows components
to bind to channels via naming them rather than knowing their IDs. This
will make it possible to automatically allocate the IDs internally or
allow component configuration to pick a specific ID for backwards
compatibility or for other policy reasons.


# 08991076 03-Feb-2020 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4camkes: Create new virtqueue initializers

camkes_virtqueue_driver_init_with_recv and
camkes_virtqueue_device_init_with_recv will also return the receive
notification CPtr and badge information for receiving events from the
other end of a virtqueue.


# 2824b26f 03-Feb-2020 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4camkes: Track receive notifications for vqs

Require virtqueues to be registered with information about how to
recieve events from the other side.


# 1bb320ba 19-Nov-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

camkes_virtqueue_device_gather_copy_buffer proto.

This function was added without a prototype but should be part of the
public interface.


# 44b21ff3 19-Nov-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

virtqueue: Remove volatile qualifier

It is not necessary to restrict the compiler in this way.


# 715fd4d5 17-Nov-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4camkes,virtqueue: Use same sized pointers

The underlying virtqueue interface uses `unsigned` types for buffer
lengths. This changes the camkes wrapper functions to use the same
types.


# aceb07ae 21-Oct-2019 Axel Heider <axelheider@gmx.de>

Avoid compiler warnings about volatile qualifier


# a07e8144 12-Sep-2019 Sylvain Gauthier <sylvain.gauthier@data61.csiro.au>

[trivial] fix license

Fix license (2018->2019).


# 9e2d0f29 06-Aug-2019 Sylvain Gauthier <sylvain.gauthier@data61.csiro.au>

Updated libsel4camkes to the new libvirtqueue

This modules now wraps the new libvirtqueue in projects_libs. The new
libvirtqueue provides scatter gather buffers as well as multi entry
rings, so this camkes lib aims at providing usable wrappers to do all
the plumbing, such as iterating through the scattered buffers,
scattering buffers into chunks, etc.

Since both users of the virtqueue are not necessarily in the same
address space, they need to share buffers as offset into the array of
shared memory. This wrapper also abstracts this as much as possible by
doing the conversion inside the wrapper functions.

So as a summary, this modules provides :

Conversion between pointer and offset in shared memory.

Taking a single buffer, splitting it into chunks and scattering it in
the virtqueue as a single ring entry. (Ex: a driver scatters a big chunk
of empty memory to be filled or read by the device).

Taking a handle (a ring entry) and iterating through it to gather back a
scattered buffer. (Ex: a driver gathers back some memory that was filled
by the device, or a device reads the data sent by the driver to perform
some operation).

Taking a handle (a ring entry) and a buffer, and iterating through the
scatter list, copying the content of the buffer into the scattered
arrays, and enqueuing it back into the used ring. (Ex: a device copies
some memory it has just read from the hardware into the buffers that
were passed for filling by the driver).


# b9916b4b 10-Aug-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4camkes: Rename camkes_virtqueue functions


# 0e7095b3 07-Aug-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4camkes: Add better typesafety to virtqueue

This updates to reflect an updated libvirtqueue interface that
encapsulates the virtqueue structure within specific device and driver
interfaces.


# c2038bc8 31-Jul-2018 Adam Felizzi <Adam.Felizzi@data61.csiro.au>

virtqueue: Updated with documentation

Updated the virtqueue interface with documentation/comments.


# acc67407 31-Jul-2018 Adam Felizzi <Adam.Felizzi@data61.csiro.au>

virtqueue: Extern'd global virtqueue variables

Added the extern property to the global 'virtqueue_channels' and
'num_registered_virtqueue_channels' variables.


# d69873c0 31-Jul-2018 Adam Felizzi <Adam.Felizzi@data61.csiro.au>

virtqueue: Renamed buffqueue to virtqueue

Updated the buffqueue source to reflect the change of name. The
library API now uses the name 'virtqueue'.