#ifdef CONFIG_MULTITHREAD_OS
 
-#define V3_CREATE_THREAD(fn, arg, name)                                \
-    do {                                                       \
+#define V3_CREATE_THREAD(fn, arg, name)        ({                      \
+       void * thread = NULL;                                                   \
        extern struct v3_os_hooks * os_hooks;                   \
        if ((os_hooks) && (os_hooks)->start_kernel_thread) {    \
-           (os_hooks)->start_kernel_thread(fn, arg, name);     \
+           thread = (os_hooks)->start_kernel_thread(fn, arg, name);    \
        }                                                       \
-    } while (0)
+       thread;                                         \
+    })
+
+
+#define V3_THREAD_SLEEP()              \
+    do{                                                        \
+       extern struct v3_os_hooks * os_hooks;                   \
+       if ((os_hooks) && (os_hooks)->kernel_thread_sleep) {    \
+           (os_hooks)->kernel_thread_sleep();  \
+       }                                                       \
+    }while(0)
+
+
+#define V3_THREAD_WAKEUP(thread)               \
+    do{                                                        \
+       extern struct v3_os_hooks * os_hooks;                   \
+       if ((os_hooks) && (os_hooks)->kernel_thread_wakeup) {   \
+           (os_hooks)->kernel_thread_wakeup(thread);   \
+       }                                                       \
+    }while(0)
+
 
 
 #define V3_Call_On_CPU(cpu, fn, arg)                   \
 
 
 
-    void (*start_kernel_thread)(int (*fn)(void * arg), void * arg, char * thread_name); 
+    void * (*start_kernel_thread)(int (*fn)(void * arg), void * arg, char * thread_name); 
+    void (*kernel_thread_sleep)(void);
+    void (*kernel_thread_wakeup)(void * thread);
     void (*interrupt_cpu)(struct v3_vm_info * vm, int logical_cpu, int vector);
     void (*call_on_cpu)(int logical_cpu, void (*fn)(void * arg), void * arg);
     void * (*start_thread_on_cpu)(int cpu_id, int (*fn)(void * arg), void * arg, char * thread_name);
 
         default n
         depends on PCI && EXPERIMENTAL && VNET
         help
-          Enable the Virtio VNET interface
+          Enable the Virtio VNET interface for Control VM
 
 config DEBUG_LINUX_VIRTIO_VNET
         bool "Virtio VNET Interface Debugging"
 
 
 config VNET_NIC
-        bool "Enable VNET VIrtio NIC Device"
+        bool "Enable VNET Backend Device"
         default n
        depends on PCI && EXPERIMENTAL && VNET
         help
-          Enable the VNET Virtio backend device
+          Enable the VNET backend device
 
 config DEBUG_VNET_NIC
         bool "VNET NIC Device Debugging"