Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Generalization of constraints on page allocation and implementation/use
[palacios.git] / linux_module / palacios.h
index f254522..4c8cf62 100644 (file)
@@ -18,6 +18,9 @@
 #define V3_ADD_PCI_HW_DEV 55
 #define V3_ADD_PCI_USER_DEV 56
 
+#define V3_DVFS_CTRL  60
+
+
 /* VM Specific IOCTLs */
 #define V3_VM_CONSOLE_CONNECT 20
 #define V3_VM_STREAM_CONNECT 21
@@ -59,10 +62,9 @@ struct v3_guest_img {
     char name[128];
 } __attribute__((packed));
 
-typedef enum { PREALLOCATED=0,          // user space-allocated (e.g. hot remove)
+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 {
@@ -153,7 +155,7 @@ struct proc_dir_entry *palacios_get_procdir(void);
 void  palacios_print_scoped(void *vm, int vcore, const char *fmt, ...);
 #define palacios_print(...) palacios_print_scoped(0,-1, __VA_ARGS__)
 // node_id=-1 => no node constraint
-void *palacios_allocate_pages(int num_pages, unsigned int alignment, int node_id, int constraints);
+void *palacios_allocate_pages(int num_pages, unsigned int alignment, int node_id, int (*filter_func)(void *paddr, void *filter_state), void *filter_state);
 void  palacios_free_pages(void *page_addr, int num_pages);
 void *palacios_alloc(unsigned int size);
 // node_id=-1 => no node constraint
@@ -163,6 +165,7 @@ void *palacios_valloc(unsigned int size); // use instead of vmalloc
 void  palacios_vfree(void *);             // use instead of vfree
 void *palacios_vaddr_to_paddr(void *vaddr);
 void *palacios_paddr_to_vaddr(void *paddr);
+void  palacios_xcall(int cpu_id, void (*fn)(void *arg), void *arg);
 void *palacios_create_and_start_kernel_thread(int (*fn)(void * arg), void *arg, char *thread_name);
 void *palacios_create_thread_on_cpu(int cpu_id, int (*fn)(void * arg), void *arg, char *thread_name);
 void  palacios_start_thread(void *thread_ptr);