aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/geode/lxfb_ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/geode/lxfb_ops.c')
0 files changed, 0 insertions, 0 deletions
ven Rostedt <rostedt@goodmis.org> 2009-12-17 22:38:35 -0500 trace-cmd: Rename struct event to struct event_format' href='/cgit/cgit.cgi/trace-cmd.git/commit/plugin_hrtimer.c?id=0b9d85ae412ab92c2690523e1ef4314bc7931a68'>0b9d85a
3bb8ccb
1074d79

3bb8ccb
1074d79
2a0cf9e
1074d79

2a0cf9e
3bb8ccb
1074d79
3bb8ccb

2a0cf9e

0b9d85a
d1c3ee0
1074d79
d1c3ee0
2a0cf9e

d1c3ee0

36f9ea1
30cd6e6
f57227c
36f9ea1

2a0cf9e
3bb8ccb
2a0cf9e

1074d79
2a0cf9e
1074d79
2a0cf9e
3bb8ccb
2a0cf9e
9e47d25

36f9ea1
30cd6e6
9e47d25
cd001f7
1074d79
36f9ea1
3bb8ccb
2a0cf9e



3bb8ccb
1074d79
2a0cf9e
1074d79


3bb8ccb
1074d79
2a0cf9e
1074d79
cd001f7
1074d79
2a0cf9e
1074d79

2a0cf9e

1074d79
2a0cf9e

3bb8ccb
2a0cf9e
f57227c

cd001f7
e46cb5c
cd001f7
30cd6e6
9e47d25
cd001f7
30cd6e6
9e47d25
e46cb5c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115




















                                                                             





                         
                                                                           
                                                             
                                                                                       
 

                                                                
 
               
                          

                                                    
                          
 
                                             

 

                                                             
                                                                                       
 
                                                          
 

                                                                     

 
                                                                           
                                                                          
 

                                  
                                        
 

                                                                  
 
                                     
 
                                                   
 
                 

 
                                                                          
                                                                         
 
                                              
                                                                       
                                  
 



                                                                  
 
                  
                                                         


                                            
 
                                                                  
                                                                 
 
                                                              
 
                                                          

         

                                                       
 

                                                           
 
                 

 
                                               
 
                                                                                  
                                                                  
 
                                                                           
                                                                 
 

                 
/*
 * Copyright (C) 2009 Red Hat Inc, Steven Rostedt <srostedt@redhat.com>
 * Copyright (C) 2009 Johannes Berg <johannes@sipsolutions.net>
 *
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation;
 * version 2.1 of the License (not later!)
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "parse-events.h"

/* return -1 (field not found/not valid number), 0 (ok), 1 (buffer full) */
static int _print_field(struct trace_seq *s, const char *fmt,
			struct event_format *event, const char *name, const void *data)
{
	struct format_field *f = pevent_find_field(event, name);
	unsigned long long val;

	if (!f)
		return -1;

	if (pevent_read_number_field(f, data, &val))
		return -1;

	return trace_seq_printf(s, fmt, val);
}

/* return 0 (ok), 1 (buffer full) */
static void print_field(struct trace_seq *s, const char *fmt,
			struct event_format *event, const char *name, const void *data)
{
	int ret = _print_field(s, fmt, event, name, data);

	if (ret == -1)
		trace_seq_printf(s, "CAN'T FIND FIELD \"%s\"", name);
}

static int timer_expire_handler(struct trace_seq *s, struct record *record,
				struct event_format *event, void *context)
{
	void *data = record->data;

	trace_seq_printf(s, "hrtimer=");

	if (_print_field(s, "0x%llx", event, "timer", data) == -1)
		print_field(s, "0x%llx", event, "hrtimer", data);

	trace_seq_printf(s, " now=");

	print_field(s, "%llu", event, "now", data);

	return 0;
}

static int timer_start_handler(struct trace_seq *s, struct record *record,
			       struct event_format *event, void *context)
{
	struct pevent *pevent = event->pevent;
	struct format_field *fn = pevent_find_field(event, "function");
	void *data = record->data;

	trace_seq_printf(s, "hrtimer=");

	if (_print_field(s, "0x%llx", event, "timer", data) == -1)
		print_field(s, "0x%llx", event, "hrtimer", data);

	if (!fn) {
		trace_seq_printf(s, " function=MISSING");
	} else {
		unsigned long long function;
		const char *func;

		if (pevent_read_number_field(fn, data, &function))
			trace_seq_printf(s, " function=INVALID");

		func = pevent_find_function(pevent, function);

		trace_seq_printf(s, " function=%s", func);
	}

	trace_seq_printf(s, " expires=");
	print_field(s, "%llu", event, "expires", data);

	trace_seq_printf(s, " softexpires=");
	print_field(s, "%llu", event, "softexpires", data);

	return 0;
}

int PEVENT_PLUGIN_LOADER(struct pevent *pevent)
{
	pevent_register_event_handler(pevent, -1, "timer", "hrtimer_expire_entry",
				      timer_expire_handler, NULL);

	pevent_register_event_handler(pevent, -1, "timer", "hrtimer_start",
				      timer_start_handler, NULL);

	return 0;
}