2 * This file is part of the Palacios Virtual Machine Monitor developed
3 * by the V3VEE Project with funding from the United States National
4 * Science Foundation and the Department of Energy.
6 * The V3VEE Project is a joint project between Northwestern University
7 * and the University of New Mexico. You can find out more at
10 * Copyright (c) 2011, Lei Xia <lxia@northwestern.edu>
11 * Copyright (c) 2011, The V3VEE Project <http://www.v3vee.org>
12 * All rights reserved.
14 * Author: Lei Xia <lxia@northwestern.edu>
16 * This is free software. You are permitted to use,
17 * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
20 #ifndef __VNET_HOST_INTERFACE_H__
21 #define __VNET_HOST_INTERFACE_H__
33 struct vnet_thread * vnet_thread_create(int (*func)(void *), void *arg, char * name);
34 void vnet_thread_sleep(int cond);
35 void vnet_thread_wakeup(struct vnet_thread *);
36 void vnet_thread_kill(struct vnet_thread *);
37 void vnet_thread_stop(struct vnet_thread *);
38 void vnet_thread_continue(struct vnet_thread *);
40 void vnet_udelay(unsigned long usecs);
42 // I know there is timer in palacios, but it has to be binded to specific VM, and the granularity is not
44 // I need a timer that is global, not related to any specific VM, and also fine-granularity
45 struct vnet_timer * vnet_create_timer(int interval /*in us*/, void (*timer_fun)(uint64_t eclipsed_cycles, void * priv_data), void * pri_data);
46 int vnet_del_timer(struct vnet_timer *);
47 int vnet_start_timer(struct vnet_timer *);
48 int vnet_stop_timer(struct vnet_timer *);