History log of /seL4-camkes-master/projects/camkes-tool/libsel4camkes/include/camkes/virtqueue_template.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.


# 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.


# 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).


# 19c9d5df 16-Jul-2019 Yu Hou <Yu.Hou@data61.csiro.au>

Trivial: style fix

make the style checker happy


# 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.


# 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'.