Add before and after hook to the control flow computing
[lttv.git] / lttv / modules / gui / controlflow / drawing.c
CommitLineData
ce0214a6 1/* This file is part of the Linux Trace Toolkit viewer
2 * Copyright (C) 2003-2004 Mathieu Desnoyers
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License Version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
16 * MA 02111-1307, USA.
17 */
fa2c4dbe 18
4e4d11b3 19#ifdef HAVE_CONFIG_H
20#include <config.h>
21#endif
22
76a67e8a 23#include <gtk/gtk.h>
24#include <gdk/gdk.h>
40debf7b 25#include <string.h>
f0d936c0 26
2eef04b5 27#include <ltt/trace.h>
28
2a2fa4f0 29#include <lttv/lttv.h>
88bf15f0 30#ifdef BABEL_CLEANUP
d8f124de 31#include <lttv/tracecontext.h>
88bf15f0 32#endif //babel_cleanup
2d262115 33#include <lttvwindow/lttvwindow.h>
b21c82b6 34#include <lttv/state.h>
f66eba62 35#include <lttv/hook.h>
831a876d 36
d66666fe 37#include "drawing.h"
a43d67ba 38#include "eventhooks.h"
d66666fe 39#include "cfv.h"
6d5ed1c3 40
41#define g_info(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, format)
6d5ed1c3 42
10a1069a 43//FIXME
0f090e21 44// fixed #define TRACE_NUMBER 0
0af21a59 45#define EXTRA_ALLOC 1024 // pixels
46
10a1069a 47
9a1ec01b 48#if 0 /* colors for two lines representation */
e800cf84 49GdkColor drawing_colors[NUM_COLORS] =
50{ /* Pixel, R, G, B */
51 { 0, 0, 0, 0 }, /* COL_BLACK */
52 { 0, 0xFFFF, 0xFFFF, 0xFFFF }, /* COL_WHITE */
23093869 53 { 0, 0x0FFF, 0xFFFF, 0xFFFF }, /* COL_WAIT_FORK : pale blue */
54 { 0, 0xFFFF, 0xFFFF, 0x0000 }, /* COL_WAIT_CPU : yellow */
dbd243b1 55 { 0, 0xFFFF, 0xA000, 0xFCFF }, /* COL_EXIT : pale magenta */
23093869 56 { 0, 0xFFFF, 0x0000, 0xFFFF }, /* COL_ZOMBIE : purple */
57 { 0, 0xFFFF, 0x0000, 0x0000 }, /* COL_WAIT : red */
58 { 0, 0x0000, 0xFFFF, 0x0000 }, /* COL_RUN : green */
59 { 0, 0x8800, 0xFFFF, 0x8A00 }, /* COL_USER_MODE : pale green */
60 { 0, 0x09FF, 0x01FF, 0xFFFF }, /* COL_SYSCALL : blue */
61 { 0, 0xF900, 0x4200, 0xFF00 }, /* COL_TRAP : pale purple */
62 { 0, 0xFFFF, 0x5AFF, 0x01FF }, /* COL_IRQ : orange */
63 { 0, 0xFFFF, 0xFFFF, 0xFFFF } /* COL_MODE_UNKNOWN : white */
64
e800cf84 65};
9a1ec01b 66#endif //0
67
68
69GdkColor drawing_colors[NUM_COLORS] =
70{ /* Pixel, R, G, B */
71 { 0, 0, 0, 0 }, /* COL_BLACK */
72 { 0, 0xFFFF, 0xFFFF, 0xFFFF }, /* COL_WHITE */
73 { 0, 0x0000, 0xFF00, 0x0000 }, /* COL_RUN_USER_MODE : green */
74 { 0, 0x0100, 0x9E00, 0xFFFF }, /* COL_RUN_SYSCALL : pale blue */
75 { 0, 0xFF00, 0xFF00, 0x0100 }, /* COL_RUN_TRAP : yellow */
faf074a3 76 { 0, 0xFFFF, 0x5E00, 0x0000 }, /* COL_RUN_IRQ : orange */
77 { 0, 0xFFFF, 0x9400, 0x9600 }, /* COL_RUN_SOFT_IRQ : pink */
2da61677 78 { 0, 0x6600, 0x0000, 0x0000 }, /* COL_WAIT : dark red */
9a1ec01b 79 { 0, 0x7700, 0x7700, 0x0000 }, /* COL_WAIT_CPU : dark yellow */
80 { 0, 0x6400, 0x0000, 0x5D00 }, /* COL_ZOMBIE : dark purple */
81 { 0, 0x0700, 0x6400, 0x0000 }, /* COL_WAIT_FORK : dark green */
82 { 0, 0x8900, 0x0000, 0x8400 }, /* COL_EXIT : "less dark" magenta */
c7620c79 83 { 0, 0x0000, 0x0000, 0x0000 }, /* COL_DEAD : black */
9a1ec01b 84 { 0, 0xFFFF, 0xFFFF, 0xFFFF }, /* COL_MODE_UNKNOWN : white */
85 { 0, 0xFFFF, 0xFFFF, 0xFFFF } /* COL_UNNAMED : white */
86
87};
88
7893f726 89/*
90RUN+USER MODE green
91RUN+SYSCALL
92RUN+TRAP
93RUN+IRQ