X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fvnet%2Fvnet_host.h;h=548a2520dd6ff352aa049313c6e758bb32e6f72c;hb=310d9000bf6012dffd877c3c42e82521b94402c4;hp=8a9f78abee8eeb37336d79c8fec2233b91948069;hpb=571978c461dde2c69a559b909c11d5b1a25ef8a3;p=palacios.git diff --git a/palacios/include/vnet/vnet_host.h b/palacios/include/vnet/vnet_host.h index 8a9f78a..548a252 100644 --- a/palacios/include/vnet/vnet_host.h +++ b/palacios/include/vnet/vnet_host.h @@ -32,7 +32,7 @@ struct vnet_timer { }; typedef unsigned long vnet_lock_t; - +typedef void *vnet_intr_flags_t; struct vnet_host_hooks { @@ -58,10 +58,10 @@ struct vnet_host_hooks { /* duplicate part from os_hooks */ void (*yield_cpu)(void); - void (*print)(const char * format, ...) - __attribute__ ((format (printf, 1, 2))); + void (*print)(void *vm , int core, const char * format, ...) + __attribute__ ((format (printf, 3, 4))); - void *(*allocate_pages)(int num_pages, unsigned int alignment); + void *(*allocate_pages)(int num_pages, unsigned int alignment, int node_id, int constraints); void (*free_pages)(void * page, int num_pages); void *(*malloc)(unsigned int size); @@ -74,6 +74,8 @@ struct vnet_host_hooks { void (*mutex_free)(void * mutex); void (*mutex_lock)(void * mutex, int must_spin); void (*mutex_unlock)(void * mutex); + vnet_intr_flags_t (*mutex_lock_irqsave)(void * mutex, int must_spin); + void (*mutex_unlock_irqrestore)(void * mutex, vnet_intr_flags_t flags); }; @@ -90,7 +92,7 @@ extern struct vnet_host_hooks * host_hooks; /* 4KB-aligned */ static inline void * Vnet_AllocPages(int num_pages){ if ((host_hooks) && host_hooks->allocate_pages) { - return host_hooks->allocate_pages(num_pages, PAGE_SIZE_4KB); + return host_hooks->allocate_pages(num_pages, PAGE_SIZE_4KB,-1,0); // any zone, no constraints } return NULL; @@ -215,17 +217,17 @@ static inline void vnet_reset_timer(struct vnet_timer * timer, if(level <= net_debug) { \ extern struct vnet_host_hooks * host_hooks; \ if ((host_hooks) && (host_hooks)->print) { \ - (host_hooks)->print((fmt), ##args); \ + (host_hooks)->print(0, -1, (fmt), ##args); \ } \ } \ } while (0) -#define Vnet_Debug(fmt, args...) \ +#define Vnet_Debug(fmt, args...) \ do { \ extern struct vnet_host_hooks * host_hooks; \ if ((host_hooks) && (host_hooks)->print) { \ - (host_hooks)->print((fmt), ##args); \ + (host_hooks)->print(0, -1, (fmt), ##args); \ } \ } while (0) @@ -252,7 +254,7 @@ static inline void vnet_lock_deinit(vnet_lock_t * lock) { static inline void vnet_lock(vnet_lock_t lock) { if (host_hooks && (host_hooks->mutex_lock)) { - host_hooks->mutex_lock((void *)lock, 0); + host_hooks->mutex_lock((void *)lock,0); } } @@ -262,22 +264,22 @@ static inline void vnet_unlock(vnet_lock_t lock) { } } -static inline unsigned long vnet_lock_irqsave(vnet_lock_t lock) { - if (host_hooks && host_hooks->mutex_lock) { - host_hooks->mutex_lock((void *)lock, 1); - return 0; +static inline vnet_intr_flags_t vnet_lock_irqsave(vnet_lock_t lock) +{ + if (host_hooks && host_hooks->mutex_lock_irqsave) { + return (host_hooks->mutex_lock_irqsave((void *)lock, 1)); } else { - return -1; + return NULL; } } -static inline void vnet_unlock_irqrestore(vnet_lock_t lock, addr_t irq_state) { - if (host_hooks && (host_hooks->mutex_unlock)) { - host_hooks->mutex_unlock((void *)lock); +static inline void vnet_unlock_irqrestore(vnet_lock_t lock, vnet_intr_flags_t irq_state) +{ + if (host_hooks && (host_hooks->mutex_unlock_irqrestore)) { + host_hooks->mutex_unlock_irqrestore((void *)lock,irq_state); } } - #endif