X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=linux_usr%2Fv3_ctrl.h;h=e5e0d762630ca0fe40ef137920ffc857f5b05e0c;hb=1950fe46c8875f4e29a7074bac321b50247e20d0;hp=aae3af6646e23c7f4f6ae7440de082159f16949f;hpb=ffd6d915b585a4a17a2d5b081313f0968885a105;p=palacios.releases.git diff --git a/linux_usr/v3_ctrl.h b/linux_usr/v3_ctrl.h index aae3af6..e5e0d76 100644 --- a/linux_usr/v3_ctrl.h +++ b/linux_usr/v3_ctrl.h @@ -6,12 +6,18 @@ #ifndef _v3_ctrl_h #define _v3_ctrl_h +#include +#include +#include "ezxml.h" /* Global Control IOCTLs */ #define V3_CREATE_GUEST 12 #define V3_FREE_GUEST 13 #define V3_ADD_MEMORY 50 +#define V3_RESET_MEMORY 51 +#define V3_REMOVE_MEMORY 52 + #define V3_ADD_PCI_HW_DEV 55 #define V3_ADD_PCI_USER_DEV 56 @@ -53,9 +59,17 @@ struct v3_guest_img { } __attribute__((packed)); +typedef enum { PREALLOCATED=0, // user space-allocated (e.g. hot remove) + REQUESTED, // kernel will attempt allocation (anywhere) + REQUESTED32, // kernel will attempt allocation (<4GB) +} v3_mem_region_type_t; + struct v3_mem_region { - unsigned long long base_addr; - unsigned long long num_pages; + v3_mem_region_type_t type; // + int node; // numa node for REQUESTED (-1 = any) + unsigned long long base_addr; // region start (hpa) for PREALLOCATED + unsigned long long num_pages; // size for PREALLOCATED or request size for REQUESTED + // should be power of 2 and > V3_CONFIG_MEM_BLOCK } __attribute__((packed)); @@ -64,7 +78,6 @@ struct v3_core_move_cmd{ unsigned short pcore_id; } __attribute__((packed)); - struct v3_debug_cmd { unsigned int core; unsigned int cmd; @@ -73,6 +86,12 @@ struct v3_debug_cmd { struct v3_chkpt_info { char store[128]; char url[256]; /* This might need to be bigger... */ + unsigned long long opts; +#define V3_CHKPT_OPT_NONE 0 +#define V3_CHKPT_OPT_SKIP_MEM 1 // don't write memory to store +#define V3_CHKPT_OPT_SKIP_DEVS 2 // don't write devices to store +#define V3_CHKPT_OPT_SKIP_CORES 4 // don't write core arch ind data to store +#define V3_CHKPT_OPT_SKIP_ARCHDEP 8 // don't write core arch dep data to store } __attribute__((packed)); @@ -84,5 +103,55 @@ struct v3_hw_pci_dev { unsigned int func; } __attribute__((packed)); +#define V3VEE_STR "\n\n" \ + "The V3Vee Project (c) 2012\n" \ + "\thttp://v3vee.org\n" \ + "\n\n" + +#define v3_usage(fmt, args...) \ +{ \ + printf(("\nUsage: %s " fmt V3VEE_STR), argv[0], ##args); \ + exit(0); \ +} + + +int v3_dev_ioctl (int req, void * arg); +int v3_vm_ioctl (const char * filename, + int req, + void * arg); +void * v3_mmap_file (const char * filename, int prot, int flags); +int v3_read_file (int fd, int size, unsigned char * buf); + +int launch_vm (const char * filename); +int stop_vm (const char * filename); + +unsigned long v3_hash_buffer (unsigned char * msg, unsigned int len); + +/* XML-related structs */ +struct cfg_value { + char * tag; + char * value; +}; + +struct xml_option { + char * tag; + ezxml_t location; + struct xml_option * next; +}; + + +struct file_info { + int size; + char filename[2048]; + char id[256]; +}; + +struct mem_file_hdr { + unsigned int file_idx; + unsigned int file_size; + unsigned long long file_offset; + unsigned long file_hash; +}; + #endif