78 |
CPUReadMemoryFunc *io_mem_read[IO_MEM_NB_ENTRIES][4]; |
CPUReadMemoryFunc *io_mem_read[IO_MEM_NB_ENTRIES][4]; |
79 |
static int io_mem_nb; |
static int io_mem_nb; |
80 |
|
|
81 |
|
/* log support */ |
82 |
|
char *logfilename = "/tmp/qemu.log"; |
83 |
|
FILE *logfile; |
84 |
|
int loglevel; |
85 |
|
|
86 |
static void page_init(void) |
static void page_init(void) |
87 |
{ |
{ |
88 |
/* NOTE: we can always suppose that host_page_size >= |
/* NOTE: we can always suppose that host_page_size >= |
681 |
#endif |
#endif |
682 |
} |
} |
683 |
|
|
684 |
|
/* enable or disable low levels log */ |
685 |
|
void cpu_set_log(int log_flags) |
686 |
|
{ |
687 |
|
loglevel = log_flags; |
688 |
|
if (loglevel && !logfile) { |
689 |
|
logfile = fopen(logfilename, "w"); |
690 |
|
if (!logfile) { |
691 |
|
perror(logfilename); |
692 |
|
_exit(1); |
693 |
|
} |
694 |
|
setvbuf(logfile, NULL, _IOLBF, 0); |
695 |
|
} |
696 |
|
} |
697 |
|
|
698 |
|
void cpu_set_log_filename(const char *filename) |
699 |
|
{ |
700 |
|
logfilename = strdup(filename); |
701 |
|
} |
702 |
|
|
703 |
/* mask must never be zero */ |
/* mask must never be zero */ |
704 |
void cpu_interrupt(CPUState *env, int mask) |
void cpu_interrupt(CPUState *env, int mask) |