src/main.c: Make it possible to pass options to the app under test
[memprof.git] / src / memprof.h
blob9d04a1af6dc8339c0e4e40d23fd022e70dd0d077
1 /* -*- mode: C; c-file-style: "linux" -*- */
3 /* MemProf -- memory profiler and leak detector
4 * Copyright 1999, 2000, 2001, Red Hat, Inc.
5 * Copyright 2002, Kristian Rietveld
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 /*====*/
23 #include <glib.h>
24 #include <gtk/gtkwidget.h>
25 #include <stdio.h>
26 #include <sys/types.h>
27 #include "bfd.h"
28 #include "stackstash.h"
29 #include "binfile.h"
31 #ifndef __MEMPROF_H__
32 #define __MEMPROF_H__
34 typedef enum {
35 BLOCK_MARKED = 1 << 0,
36 BLOCK_IS_ROOT = 1 << 1
37 } BlockFlags;
39 typedef struct {
40 guint flags;
41 void *addr;
42 guint size;
43 StackNode *stack;
45 gint refcount;
46 } Block;
48 typedef struct {
49 /* Initial members of this struct must be identical to that of Symbol */
50 guint start;
51 guint size;
52 gchar *name;
53 gulong offset;
54 gboolean prepared;
56 BinFile *binfile;
57 } Map;
59 gboolean symbol_equal (gconstpointer s1, gconstpointer s2);
60 guint symbol_hash (gconstpointer symbol);
61 char * symbol_copy (const char *symbol);
62 void symbol_free (char *symbol);
64 typedef void (*SectionFunc) (void *addr, guint size, gpointer user_data);
66 typedef enum {
67 ERROR_WARNING,
68 ERROR_MODAL,
69 ERROR_FATAL
70 } ErrorType;
72 void show_error (GtkWidget *parent_window,
73 ErrorType error,
74 const gchar *format,
75 ...) G_GNUC_PRINTF (3, 4);
77 void block_unref (Block *block);
79 void process_map_sections (Map *map,
80 SectionFunc func,
81 gpointer user_data);
82 char * demangle (Map *map,
83 const char *name);
84 gboolean read_bfd (Map *map);
85 gboolean find_line (Map *map,
86 bfd_vma addr,
87 const char **filename,
88 char **functionname,
89 unsigned int *line);
92 /* Convert a device / inode pair into a file. Not needed for kernel-2.2 or greater.
94 gchar *locate_inode (dev_t device,
95 ino_t inode);
96 void read_inode (const gchar *path);
98 #endif /* __MEMPROF_H__ */