| /* |
| * Copyright 2017, Data61 |
| * Commonwealth Scientific and Industrial Research Organisation (CSIRO) |
| * ABN 41 687 119 230. |
| * |
| * This software may be distributed and modified according to the terms of |
| * the GNU General Public License version 2. Note that NO WARRANTY is provided. |
| * See "LICENSE_GPLv2.txt" for details. |
| * |
| * @TAG(DATA61_GPL) |
| */ |
| |
| #pragma once |
| |
| #include "libvchan.h" |
| #include "vchan_sharemem.h" |
| #include "vchan_copy.h" |
| |
| typedef void (*callback_func_t)(void *); |
| |
| typedef struct camkes_vchan_con { |
| /* Domain */ |
| int component_dom_num; |
| void *data_buf; |
| |
| /* Function Pointers */ |
| int (*connect)(vchan_connect_t); |
| int (*disconnect)(vchan_connect_t); |
| intptr_t (*get_buf)(vchan_ctrl_t, int); |
| int (*status)(vchan_ctrl_t); |
| int (*alert_status)(vchan_ctrl_t); |
| |
| void (*wait)(void); |
| void (*alert)(void); |
| int (*poll)(void); |
| |
| int (*reg_callback)(callback_func_t, void *); |
| } camkes_vchan_con_t; |
| |
| struct libvchan { |
| int is_server; |
| int server_persists; |
| int blocking; |
| int domain_num, port_num; |
| |
| camkes_vchan_con_t *con; |
| }; |
| |
| void init_camkes_vchan(camkes_vchan_con_t *c); |
| |
| int vchan_set_callback(callback_func_t cb, void *data); |
| |
| vchan_buf_t *get_vchan_buf(vchan_ctrl_t *args, camkes_vchan_con_t *c, int action); |
| |
| void vevent_wait(void); |
| int vevent_poll(void); |
| int vevent_reg_callback(void (*callback)(void*), void *arg); |
| |