void __assertion_handle_failure(const struct __assertion_point *point) { if (cpudata_var(assert_recursive_lock)) { printk("\nrecursion detected on CPU %d\n", cpu_get_id()); goto out; } cpudata_var(assert_recursive_lock) = 1; spin_lock_ipl_disable(&assert_lock); print_oops(); printk( " ASSERTION FAILED on CPU %d\n" LOCATION_FUNC_FMT("\t", "\n") "\n" "%s\n", cpu_get_id(), LOCATION_FUNC_ARGS(&point->location), point->expression); if (*__assertion_message_buff) printk("\n\t(%s)\n", __assertion_message_buff); whereami(); spin_unlock(&assert_lock); /* leave IRQs off */ out: arch_shutdown(ARCH_SHUTDOWN_MODE_ABORT); /* NOTREACHED */ }
/* Used also in boot_thread.c */ void thread_set_current(struct thread *t) { cpudata_var(__current_thread) = t; }
struct thread *thread_self(void) { return cpudata_var(__current_thread); }