struct vnet_host_hooks * host_hooks;
+struct vnet_thread * vnet_start_thread(int (*func)(void *), void *arg, char * name){
+ if((host_hooks) && host_hooks->thread_start){
-int vnet_lock_init(vnet_lock_t * lock) {
- *lock = (addr_t)(host_hooks->mutex_alloc());
-
- if (!(*lock)) {
- return -1;
- }
-
- return 0;
-}
-
+ struct vnet_thread * thread = Vnet_Malloc(sizeof(struct vnet_thread));
-struct vnet_thread * vnet_start_thread(int (*func)(void *), void *arg, char * name){
- struct vnet_thread * thread;
+ if (!thread) {
+ PrintError(VM_NONE, VCORE_NONE, "Cannot allocate space to create a vnet thread\n");
+ return NULL;
+ }
- thread = Vnet_Malloc(sizeof(struct vnet_thread));
-
- thread->host_thread = host_hooks->thread_start(func, arg, name);
+ thread->host_thread = host_hooks->thread_start(func, arg, name);
- if(thread->host_thread == NULL){
+ if(thread->host_thread){
+ return thread;
+ }
Vnet_Free(thread);
- return NULL;
}
- return thread;
+ return NULL;
}
-
struct vnet_timer * vnet_create_timer(unsigned long interval,
- void (* timer_fun)(void * priv_data), void * priv_data){
- struct vnet_timer * timer = NULL;
-
+ void (* timer_fun)(void * priv_data),
+ void * priv_data){
if((host_hooks) && host_hooks->timer_create){
- timer = Vnet_Malloc(sizeof(struct vnet_timer));
+ struct vnet_timer * timer = Vnet_Malloc(sizeof(struct vnet_timer));
+
+ if (!timer) {
+ PrintError(VM_NONE, VCORE_NONE, "Cannot allocate space to create a vnet timer\n");
+ return NULL;
+ }
timer->host_timer = host_hooks->timer_create(interval, timer_fun, priv_data);
+
+ return timer;
}
- return timer;
+ return NULL;
}
}
+void deinit_vnet(){
+ v3_deinit_vnet();
+ // host_hooks = NULL;
+}
+