.long FLT24,domain_crash_synchronous , FLT25,domain_crash_synchronous
.previous
+domain_crash_synchronous_string:
+ .asciz "domain_crash_sync from entry.S %lx\n"
+
+domain_crash_synchronous:
+ pushl $domain_crash_synchronous_string
+ call printf
+ jmp __domain_crash_synchronous
+
ALIGN
process_guest_exception_and_events:
leal VCPU_trap_bounce(%ebx),%edx
}
-void domain_crash(struct domain *d)
+void __domain_crash(struct domain *d)
{
if ( d == current->domain )
{
}
-void domain_crash_synchronous(void)
+void __domain_crash_synchronous(void)
{
- domain_crash(current->domain);
+ __domain_crash(current->domain);
for ( ; ; )
do_softirq();
}
* caller is the specified domain. The domain is not synchronously descheduled
* from any processor.
*/
-extern void domain_crash(struct domain *d);
+extern void __domain_crash(struct domain *d);
+#define domain_crash(d) do { \
+ printf("domain_crash called from %s:%d\n", __FILE__, __LINE__); \
+ __domain_crash(d); \
+} while (0)
/*
* Mark current domain as crashed and synchronously deschedule from the local
* processor. This function never returns.
*/
-extern void domain_crash_synchronous(void) __attribute__((noreturn));
+extern void __domain_crash_synchronous(void) __attribute__((noreturn));
+#define domain_crash_synchronous() do { \
+ printf("domain_crash_sync called from %s:%d\n", __FILE__, __LINE__); \
+ __domain_crash_synchronous(); \
+} while (0)
void new_thread(struct vcpu *d,
unsigned long start_pc,