1/* 2 * Copyright 2019, 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#pragma once 14 15#include <stdbool.h> 16#include <stddef.h> 17#include <virtqueue.h> 18 19#include <sel4/sel4.h> 20 21typedef struct camkes_msgqueue_sender { 22 bool initialised; 23 virtqueue_driver_t sender_channel; 24 size_t message_size; 25} camkes_msgqueue_sender_t; 26 27typedef struct camkes_msgqueue_receiver { 28 bool initialised; 29 virtqueue_device_t receiver_channel; 30 size_t message_size; 31 int (*poll)(void); 32 void (*wait)(void); 33} camkes_msgqueue_receiver_t; 34 35int camkes_msgqueue_sender_init(int msgqueue_id, camkes_msgqueue_sender_t *sender); 36 37int camkes_msgqueue_receiver_init(int msgqueue_id, camkes_msgqueue_receiver_t *receiver); 38 39int camkes_msgqueue_send(camkes_msgqueue_sender_t *sender, void *message, size_t message_size); 40 41int camkes_msgqueue_poll(camkes_msgqueue_receiver_t *receiver); 42 43int camkes_msgqueue_wait(camkes_msgqueue_receiver_t *receiver); 44 45int camkes_msgqueue_get(camkes_msgqueue_receiver_t *receiver, void *buffer, size_t buffer_size); 46