xref: /minix3/minix/include/minix/vboxtype.h (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
1 #ifndef _MINIX_VBOXTYPE_H
2 #define _MINIX_VBOXTYPE_H
3 
4 /* This header declares the type definitions shared between VBOX driver, the
5  * interface in libsys, and any caller of those interface functions.
6  */
7 
8 /* Call parameter type. */
9 typedef enum {
10   VBOX_TYPE_INVALID,		/* invalid type */
11   VBOX_TYPE_U32,		/* 32-bit value */
12   VBOX_TYPE_U64,		/* 64-bit value */
13   VBOX_TYPE_PTR			/* pointer to granted memory area */
14 } vbox_type_t;
15 
16 /* Call parameter transfer direction. */
17 #define VBOX_DIR_IN	0x01	/* from host to guest */
18 #define VBOX_DIR_OUT	0x02	/* from guest to host */
19 #define VBOX_DIR_INOUT	(VBOX_DIR_IN | VBOX_DIR_OUT)
20 
21 /* Call parameter. */
22 typedef struct {
23   vbox_type_t type;
24   union {
25 	u32_t u32;
26 	u64_t u64;
27 	struct {
28 		cp_grant_id_t grant;
29 		size_t off;
30 		size_t size;
31 		unsigned int dir;
32 	} ptr;
33   };
34 } vbox_param_t;
35 
36 #endif /*_MINIX_VBOXTYPE_H */
37