示例#1
0
void _udelay_(unsigned int us)
{
	unsigned int t0 = _get_time();

	while (_get_time() - t0 <= us)
		;
}
示例#2
0
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);
}
示例#3
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);
}
示例#4
0
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);
}
示例#5
0
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);
}