README.md
1<!--
2 Copyright 2018, Data61
3 Commonwealth Scientific and Industrial Research Organisation (CSIRO)
4 ABN 41 687 119 230.
5
6 This software may be distributed and modified according to the terms of
7 the BSD 2-Clause license. Note that NO WARRANTY is provided.
8 See "LICENSE_BSD2.txt" for details.
9
10 @TAG(DATA61_BSD)
11 -->
12
13# CAmkES support functionality
14
15To use this library in a project you should link 'sel4camkes' to your target
16application/component with CMake. This library provides various utilities for
17interfacing with seL4 in a CAmkES-based system. Some of these utilities are:
18
19### virtqueue
20
21**_This implementation is currently a work in progress_**
22
23Functions are provided to help create virtqueue connections between your CAmkES
24components. This is based on the libvirtqueue implementation
25(project_libs/libvirtqueue). The functions provided are divided into two
26interfaces, being:
27 * _virtqueue template.h:_ These are functions intended to be used by a
28 CAmkES template. This interface is meant to allow a CAmkES template to
29 register a virtqueue channel.
30 * _virtqueue.h_ : These are functions intended to be used by a CAmkES
31 component. This interface provides a CAmkES component the ability to
32 create virtqueue objects (from libvirtqueue) out of the channels
33 registered by its templates. This interface also includes
34 memory allocation mechanisms over dataports for creating virtqueue buffers
35 to pass data with.
36
37#### Caveats
38
39This library is still under active development. Current shortcomings of the
40implementation include:
41* Each virtqueue is expected to have its own shared memory buffer region. Thus
42 allocating a virtqueue buffer will always return the same region of memory. The
43 allocation mechanisms are intended to be changed to work over a global memory region with
44 other components.
45* The maximum number of virtqueues a component can register is defined by `MAX_CAMKES_VIRTQUEUE_ID`
46