blob: 62bfb504d00069f3c087163e9af01663bb429a5a [file] [log] [blame]
#include <parlib/arch/arch.h>
#include <stdio.h>
#include <stdarg.h>
#include <parlib/assert.h>
#include <stdlib.h>
#include <parlib/ros_debug.h>
char *argv0;
/*
* Panic is called on unresolvable fatal errors.
* It prints "panic: <message>", then causes a breakpoint exception,
* which causes ROS to enter the ROS kernel monitor.
*/
void
_panic(const char *file, int line, const char *fmt,...)
{
va_list ap;
va_start(ap, fmt);
// Print the panic message
if (argv0)
printf("%s: ", argv0);
printf("user panic at %s:%d: ", file, line);
vprintf(fmt, ap);
printf("\n");
// Cause a breakpoint exception
while (1)
breakpoint();
}
void _assert_failed(const char *file, int line, const char *msg)
{
printf("[user] %s:%d, vcore %d, Assertion failed: %s\n", file, line,
vcore_id(), msg);
abort();
}