void __assert(const char *file, unsigned int line) { printf("ASSERT: %s:%d\n", file, line); backtrace("assert"); (void)console_flush(); plat_panic_handler(); }
/* * This is a basic implementation. This could be improved. */ void __assert (const char *function, const char *file, unsigned int line, const char *assertion) { tf_printf("ASSERT: %s <%d> : %s\n", function, line, assertion); console_flush(); plat_panic_handler(); }
void __assert(void) { backtrace("assert"); (void)console_flush(); plat_panic_handler(); }
/******************************************************************* * Reduced snprintf to be used for Trusted firmware. * The following type specifiers are supported: * * %d or %i - signed decimal format * %s - string format * %u - unsigned decimal format * * The function panics on all other formats specifiers. * * It returns the number of characters that would be written if the * buffer was big enough. If it returns a value lower than n, the * whole string has been written. *******************************************************************/ int snprintf(char *s, size_t n, const char *fmt, ...) { va_list args; int num; unsigned int unum; char *str; size_t chars_printed = 0U; if (n == 0U) { /* There isn't space for anything. */ } else if (n == 1U) { /* Buffer is too small to actually write anything else. */ *s = '\0'; n = 0U; } else { /* Reserve space for the terminator character. */ n--; } va_start(args, fmt); while (*fmt != '\0') { if (*fmt == '%') { fmt++; /* Check the format specifier. */ switch (*fmt) { case 'i': case 'd': num = va_arg(args, int); if (num < 0) { if (chars_printed < n) { *s = '-'; s++; } chars_printed++; unum = (unsigned int)-num; } else { unum = (unsigned int)num; } unsigned_dec_print(&s, n, &chars_printed, unum); break; case 's': str = va_arg(args, char *); string_print(&s, n, &chars_printed, str); break; case 'u': unum = va_arg(args, unsigned int); unsigned_dec_print(&s, n, &chars_printed, unum); break; default: /* Panic on any other format specifier. */ ERROR("snprintf: specifier with ASCII code '%d' not supported.", *fmt); plat_panic_handler(); assert(0); /* Unreachable */ } fmt++; continue; } if (chars_printed < n) { *s = *fmt; s++; } fmt++; chars_printed++; }