1f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu/*
2f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * Copyright © 2008 Jérôme Glisse
3f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * All Rights Reserved.
4f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu *
5f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * Permission is hereby granted, free of charge, to any person obtaining
6f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * a copy of this software and associated documentation files (the
7f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * "Software"), to deal in the Software without restriction, including
8f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * without limitation the rights to use, copy, modify, merge, publish,
9f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * distribute, sub license, and/or sell copies of the Software, and to
10f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * permit persons to whom the Software is furnished to do so, subject to
11f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * the following conditions:
12f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu *
13f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
15f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS
17f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * USE OR OTHER DEALINGS IN THE SOFTWARE.
21f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu *
22f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * The above copyright notice and this permission notice (including the
23f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * next paragraph) shall be included in all copies or substantial portions
24f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * of the Software.
25f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu */
26f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu/*
27f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu * Authors:
28f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu *      Jérôme Glisse <glisse@freedesktop.org>
29f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu */
30f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu#ifndef RADEON_TRACK_H
31f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu#define RADEON_TRACK_H
32f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu
33f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryustruct radeon_track_event {
34f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu    struct radeon_track_event   *next;
35f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu    char                        *file;
36f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu    char                        *func;
37f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu    char                        *op;
38f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu    unsigned                    line;
39f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu};
40f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu
41f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryustruct radeon_track {
42f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu    struct radeon_track         *next;
43f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu    struct radeon_track         *prev;
44f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu    unsigned                    key;
45f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu    struct radeon_track_event   *events;
46f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu};
47f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu
48f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryustruct radeon_tracker {
49f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu    struct radeon_track         tracks;
50f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu};
51f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu
52f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryuvoid radeon_track_add_event(struct radeon_track *track,
53f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu                            const char *file,
54f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu                            const char *func,
55f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu                            const char *op,
56f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu                            unsigned line);
57f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryustruct radeon_track *radeon_tracker_add_track(struct radeon_tracker *tracker,
58f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu                                              unsigned key);
59f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryuvoid radeon_tracker_remove_track(struct radeon_tracker *tracker,
60f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu                                 struct radeon_track *track);
61f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryuvoid radeon_tracker_print(struct radeon_tracker *tracker,
62f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu                          FILE *file);
63f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu
64f0352d4fde4ec179ffe04c3f834199d3bad36087Ho-Eun Ryu#endif
65