Add trace points for g_malloc/g_free functions
Derived from a patch submitted by Avi Kivity. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
41a748265f
commit
0750112af4
27
vl.c
27
vl.c
|
@ -2075,6 +2075,26 @@ static const QEMUOption *lookup_opt(int argc, char **argv,
|
||||||
return popt;
|
return popt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gpointer malloc_and_trace(gsize n_bytes)
|
||||||
|
{
|
||||||
|
void *ptr = malloc(n_bytes);
|
||||||
|
trace_qemu_malloc(n_bytes, ptr);
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gpointer realloc_and_trace(gpointer mem, gsize n_bytes)
|
||||||
|
{
|
||||||
|
void *ptr = realloc(mem, n_bytes);
|
||||||
|
trace_qemu_realloc(mem, n_bytes, ptr);
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_and_trace(gpointer mem)
|
||||||
|
{
|
||||||
|
trace_qemu_free(mem);
|
||||||
|
free(mem);
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv, char **envp)
|
int main(int argc, char **argv, char **envp)
|
||||||
{
|
{
|
||||||
const char *gdbstub_dev = NULL;
|
const char *gdbstub_dev = NULL;
|
||||||
|
@ -2103,10 +2123,17 @@ int main(int argc, char **argv, char **envp)
|
||||||
const char *trace_file = NULL;
|
const char *trace_file = NULL;
|
||||||
const char *log_mask = NULL;
|
const char *log_mask = NULL;
|
||||||
const char *log_file = NULL;
|
const char *log_file = NULL;
|
||||||
|
GMemVTable mem_trace = {
|
||||||
|
.malloc = malloc_and_trace,
|
||||||
|
.realloc = realloc_and_trace,
|
||||||
|
.free = free_and_trace,
|
||||||
|
};
|
||||||
|
|
||||||
atexit(qemu_run_exit_notifiers);
|
atexit(qemu_run_exit_notifiers);
|
||||||
error_set_progname(argv[0]);
|
error_set_progname(argv[0]);
|
||||||
|
|
||||||
|
g_mem_set_vtable(&mem_trace);
|
||||||
|
|
||||||
init_clocks();
|
init_clocks();
|
||||||
|
|
||||||
qemu_cache_utils_init(envp);
|
qemu_cache_utils_init(envp);
|
||||||
|
|
Loading…
Reference in New Issue