void _udelay_(unsigned int us) { unsigned int t0 = _get_time(); while (_get_time() - t0 <= us) ; }
void game_over(const char* reason) { static const int Y_START = 1; static const int name_y = 8 + Y_START; io::clear_screen(); int middle = sys::get_terminal_width() / 2; for (size_t i = 0; strlen(tomb_stone[i]); i++) { io::printf(middle, i + Y_START, io::CENTER, color_gray, "%s", tomb_stone[i]); } int death_level = 1 + current_dungeon->level - current_branch->base_level; io::printf(middle, name_y, io::CENTER, color_white, "%s", player.name); io::printf(middle, name_y + 1, io::CENTER, color_white, "Slain by: %s", reason); io::printf(middle, name_y + 2, io::CENTER, color_white, "In %s level %d", current_branch->name.c_str(), death_level); io::printf(middle, name_y + 4, io::CENTER, color_white, "%s", _get_today()); io::printf(middle, name_y + 5, io::CENTER, color_white, "%s", _get_time()); io::flush(); wait_for_key("\n\r \x1B"); exit(0); }
static void read_guest_mem(void) { uint32_t *guest_mem; gint64 end_time; int i, j; g_mutex_lock(data_mutex); end_time = _get_time() + 5 * G_TIME_SPAN_SECOND; while (!fds_num) { if (!_cond_wait_until(data_cond, data_mutex, end_time)) { /* timeout has passed */ g_assert(fds_num); break; } } /* check for sanity */ g_assert_cmpint(fds_num, >, 0); g_assert_cmpint(fds_num, ==, memory.nregions); /* iterate all regions */ for (i = 0; i < fds_num; i++) { /* We'll check only the region statring at 0x0*/ if (memory.regions[i].guest_phys_addr != 0x0) { continue; } g_assert_cmpint(memory.regions[i].memory_size, >, 1024); guest_mem = mmap(0, memory.regions[i].memory_size, PROT_READ | PROT_WRITE, MAP_SHARED, fds[i], 0); for (j = 0; j < 256; j++) { uint32_t a = readl(memory.regions[i].guest_phys_addr + j*4); uint32_t b = guest_mem[j]; g_assert_cmpint(a, ==, b); } munmap(guest_mem, memory.regions[i].memory_size); } g_assert_cmpint(1, ==, 1); g_mutex_unlock(data_mutex); }
void wf_debug_printf(const char* func, int level, const char* format, ...) { va_list args; va_start(args, format); if (level <= wf_debug) { #ifdef SHOW_TIME fprintf(stderr, "%Lu %s(): ", _get_time(), func); #else fprintf(stderr, "%s(): ", func); #endif vfprintf(stderr, format, args); fprintf(stderr, "\n"); } va_end(args); }
int debug_log_print(t_log_p log, int level, const char *func, const char *file, unsigned long line, const char *fmt, ...) { va_list args; int rc = 0; int buf_len; char *new_buf; char time[64]; long fsize; if ((level <= LOG_DEBUG_DEFAULT_LEVEL) || (level <= log->level)) { _get_time(time, sizeof(time)); if (!log->use_stdout) { fsize = ftell(log->fp); if (fsize > LOG_DEBUG_FILE_SIZE) { int fd; fclose(log->fp); fd = open(log->log_filename, O_CREAT | O_WRONLY | O_TRUNC | O_APPEND, 0666); if (fd >= 0) { close(fd); } log->fp = fopen(log->log_filename, "w+"); if (log->fp == NULL) { log->fp = stdout; log->use_stdout = 1; } fprintf(log->fp, "%s" CON_COLOR_RED "[!!!!!!]" CON_COLOR_END CON_COLOR_RED " FILE truncate!(size: %ld)" CON_COLOR_END "\n", time, fsize); } } va_start(args, fmt); do { buf_len = log->msg_buf_len; rc = vsnprintf(log->msg_buf, log->msg_buf_len, fmt, args); if (rc >= buf_len) { //printf("Need relloc buf to %lu\n", log->msg_buf_len); new_buf = malloc(buf_len * 2); if (new_buf == NULL) { break; } else { free(log->msg_buf); log->msg_buf = new_buf; log->msg_buf_len = buf_len * 2; } } } while (rc >= buf_len); va_end(args); #define LINE_FILE_FUNC_FMT "[%4lu][%-25s]" switch (level) { case eLOG_LEVEL_TRACE: rc = fprintf(log->fp, "%s" CON_COLOR_GREEN "[TRACE]" CON_COLOR_END CON_COLOR_CYAN LINE_FILE_FUNC_FMT CON_COLOR_END CON_COLOR_GREEN " %s" CON_COLOR_END, time, line, func, log->msg_buf); break; case eLOG_LEVEL_DEBUG: rc = fprintf(log->fp, "%s" CON_COLOR_GREEN "[DEBUG]" CON_COLOR_END CON_COLOR_CYAN LINE_FILE_FUNC_FMT CON_COLOR_END CON_COLOR_GREEN " %s" CON_COLOR_END, time, line, func, log->msg_buf); break; case eLOG_LEVEL_INFOR: rc = fprintf(log->fp, "%s" CON_COLOR_YELLOW "[INFO ]" CON_COLOR_END CON_COLOR_CYAN LINE_FILE_FUNC_FMT CON_COLOR_END CON_COLOR_YELLOW " %s" CON_COLOR_END, time, line, func, log->msg_buf); break; case eLOG_LEVEL_WARNING: rc = fprintf(log->fp, "%s" CON_COLOR_PURPLE "[WARN ]" CON_COLOR_END CON_COLOR_CYAN LINE_FILE_FUNC_FMT CON_COLOR_END CON_COLOR_PURPLE " %s" CON_COLOR_END, time, line, func, log->msg_buf); break; case eLOG_LEVEL_ERROR: rc = fprintf(log->fp, "%s" CON_COLOR_RED "[ERROR]" CON_COLOR_END CON_COLOR_CYAN LINE_FILE_FUNC_FMT CON_COLOR_END CON_COLOR_RED " %s" CON_COLOR_END, time, line, func, log->msg_buf); break; case eLOG_LEVEL_CRITICAL: rc = fprintf(log->fp, "%s" CON_COLOR_RED "[!!!!!]" CON_COLOR_END CON_COLOR_CYAN LINE_FILE_FUNC_FMT CON_COLOR_END CON_COLOR_RED " %s" CON_COLOR_END, time, line, func, log->msg_buf); break; default: rc = fprintf(log->fp, "%s[DEBUG]" LINE_FILE_FUNC_FMT "%s", time, line, func, log->msg_buf); break; } #undef LINE_FILE_FUNC_FMT fflush(log->fp); } return (rc); }