X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm.h;h=dad24f6be7a81e2654149ef31db9085f40796dae;hb=09a7d3811df9df65346e36419f553a38c8c45c72;hp=a5b47dc61268329b31446c4198735cf700a769da;hpb=901fc56e53aaae4ebd6e9c3f9879afc3288be824;p=palacios.git diff --git a/palacios/include/palacios/vmm.h b/palacios/include/palacios/vmm.h index a5b47dc..dad24f6 100644 --- a/palacios/include/palacios/vmm.h +++ b/palacios/include/palacios/vmm.h @@ -211,18 +211,27 @@ struct guest_info; } while (0) - - +#define V3_Reparent_Threadd() \ + do { \ + if((os_hooks) && (os_hooks)->reparent_threaded) { \ + (os_hooks)->reparent_threaded(); \ + } \ + } while(0) /* ** */ #define V3_ASSERT(x) \ do { \ + extern struct v3_os_hooks * os_hooks; \ if (!(x)) { \ PrintDebug("Failed assertion in %s: %s at %s, line %d, RA=%lx\n", \ __func__, #x, __FILE__, __LINE__, \ (ulong_t) __builtin_return_address(0)); \ - while(1); \ + while(1){ \ + if ((os_hooks) && (os_hooks)->yield_cpu) { \ + (os_hooks)->yield_cpu(); \ + } \ + } \ } \ } while(0) \ @@ -292,7 +301,7 @@ struct v3_os_hooks { 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); - + void (*reparent_threadd)(void); };