blob: 12fadd9b325c4f9a23d2684a5e8b648e3ff3f126 [file] [log] [blame]
/*
* 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"
#define VCHAN_EVENT_IRQ 92
#define DATATYPE_INT 0
#define DATATYPE_STRING 1
/* Defines for copying/reading data across vchans */
#define VCHAN_PACKET_SIZE 4096
#define FILE_DATAPORT_MAX_SIZE 4096
#define NOWAIT_DATA_READY 1
#define NOWAIT_BUF_SPACE 2
#define VCHAN_STREAM 1
#define VCHAN_NOSTREAM 0
/* Used in arguments referring to a vchan instance */
typedef struct vchan_ctrl {
int domain;
int dest;
int port;
} vchan_ctrl_t;
/* Used in arguments referring to a vchan instance */
typedef struct vchan_alert {
int buffer_space;
int data_ready;
int dest;
int port;
} vchan_alert_t;
/* Arguments structure used for vchan write/read actions between guest os's */
typedef struct vchan_args {
vchan_ctrl_t v;
void *mmap_ptr;
int stream;
int size;
int mmap_phys_ptr;
} vchan_args_t;
/* Argument structure used for vchan */
typedef struct vchan_check_args {
vchan_ctrl_t v;
int nowait;
int state;
int checktype;
} vchan_check_args_t;
/* Argument structure used for vchan connects */
typedef struct vchan_connect {
vchan_ctrl_t v;
int server;
int eventfd;
unsigned event_mon;
} vchan_connect_t;
int libvchan_readwrite(libvchan_t *ctrl, void *data, size_t size, int cmd, int stream);