2
* Copyright © 2008 Jérôme Glisse
5
* Permission is hereby granted, free of charge, to any person obtaining
6
* a copy of this software and associated documentation files (the
7
* "Software"), to deal in the Software without restriction, including
8
* without limitation the rights to use, copy, modify, merge, publish,
9
* distribute, sub license, and/or sell copies of the Software, and to
10
* permit persons to whom the Software is furnished to do so, subject to
11
* the following conditions:
13
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
15
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
* NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS
17
* AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20
* USE OR OTHER DEALINGS IN THE SOFTWARE.
22
* The above copyright notice and this permission notice (including the
23
* next paragraph) shall be included in all copies or substantial portions
28
* Jérôme Glisse <glisse@freedesktop.org>
33
#include "radeon_track.h"
35
void radeon_track_add_event(struct radeon_track *track,
41
struct radeon_track_event *event;
46
event = (void*)calloc(1,sizeof(struct radeon_track_event));
51
event->file = strdup(file);
52
event->func = strdup(func);
53
event->op = strdup(op);
54
if (event->file == NULL || event->func == NULL || event->op == NULL) {
61
event->next = track->events;
62
track->events = event;
65
struct radeon_track *radeon_tracker_add_track(struct radeon_tracker *tracker,
68
struct radeon_track *track;
70
track = (struct radeon_track*)calloc(1, sizeof(struct radeon_track));
72
track->next = tracker->tracks.next;
73
track->prev = &tracker->tracks;
74
tracker->tracks.next = track;
76
track->next->prev = track;
84
void radeon_tracker_remove_track(struct radeon_tracker *tracker,
85
struct radeon_track *track)
87
struct radeon_track_event *event;
93
track->prev->next = track->next;
95
track->next->prev = track->prev;
97
track->next = track->prev = NULL;
98
event = track->events;
107
track->events = NULL;
111
void radeon_tracker_print(struct radeon_tracker *tracker, FILE *file)
113
struct radeon_track *track;
114
struct radeon_track_event *event;
117
track = tracker->tracks.next;
119
event = track->events;
120
fprintf(file, "[0x%08X] :\n", track->key);
123
fprintf(file, " [0x%08X:%s](%s:%s:%d)\n",
124
track->key, event->op, event->file,
125
event->func, event->line);
135
track->events = NULL;
140
tracker->tracks.next = NULL;