diff mbox

[RFC] Trace: use unsigned long long in trace print frames

Message ID 4D9573DB.4010009@cn.fujitsu.com (mailing list archive)
State New, archived
Headers show

Commit Message

liubo April 1, 2011, 6:42 a.m. UTC
None

Comments

liubo April 2, 2011, 1:41 a.m. UTC | #1
On 04/01/2011 09:49 PM, Steven Rostedt wrote:
> On Fri, 2011-04-01 at 14:42 +0800, liubo wrote:
>> While adding tracepoint for btrfs, I got a problem:
>>
>> btrfs uses some macros with "ULL" type, but tracepoint's macros,
>> __print_[flags,symbols](), only have "unsigned long", so on 32bit box
>> there will be 64->32 truncate WARNINGs when compiling.
>>
>> Here I'm inclined to make the replacement to clear those WARNINGs.
> 
> Hmm, I don't like this. unsigned long is a natural word for
> architectures, I don't want to have 32 bit suffer because one user is
> doing something with ULL.
> 
> A better solution is to add a trace_print_flags_u64 or something, that
> can be used for cases that u64 is needed. For archs were sizeof(long) ==
> sizeof(u64) we can have the two macros/structs be the same.
> 

All right, a u64 specific one is also in my mind. :)

thanks,
liubo

> -- Steve
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
index 22b32af..b52f2c5 100644
--- a/include/linux/ftrace_event.h
+++ b/include/linux/ftrace_event.h
@@ -12,15 +12,16 @@  struct tracer;
 struct dentry;
 
 struct trace_print_flags {
-	unsigned long		mask;
+	unsigned long long	mask;
 	const char		*name;
 };
 
 const char *ftrace_print_flags_seq(struct trace_seq *p, const char *delim,
-				   unsigned long flags,
+				   unsigned long long flags,
 				   const struct trace_print_flags *flag_array);
 
-const char *ftrace_print_symbols_seq(struct trace_seq *p, unsigned long val,
+const char *ftrace_print_symbols_seq(struct trace_seq *p,
+				     unsigned long long val,
 				     const struct trace_print_flags *symbol_array);
 
 const char *ftrace_print_hex_seq(struct trace_seq *p,
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
index 456be90..97ba902 100644
--- a/kernel/trace/trace_output.c
+++ b/kernel/trace/trace_output.c
@@ -294,10 +294,10 @@  int trace_seq_path(struct trace_seq *s, struct path *path)
 
 const char *
 ftrace_print_flags_seq(struct trace_seq *p, const char *delim,
-		       unsigned long flags,
+		       unsigned long long flags,
 		       const struct trace_print_flags *flag_array)
 {
-	unsigned long mask;
+	unsigned long long mask;
 	const char *str;
 	const char *ret = p->buffer + p->len;
 	int i;
@@ -319,7 +319,7 @@  ftrace_print_flags_seq(struct trace_seq *p, const char *delim,
 	if (flags) {
 		if (p->len && delim)
 			trace_seq_puts(p, delim);
-		trace_seq_printf(p, "0x%lx", flags);
+		trace_seq_printf(p, "0x%llx", flags);
 	}
 
 	trace_seq_putc(p, 0);
@@ -329,7 +329,7 @@  ftrace_print_flags_seq(struct trace_seq *p, const char *delim,
 EXPORT_SYMBOL(ftrace_print_flags_seq);
 
 const char *
-ftrace_print_symbols_seq(struct trace_seq *p, unsigned long val,
+ftrace_print_symbols_seq(struct trace_seq *p, unsigned long long val,
 			 const struct trace_print_flags *symbol_array)
 {
 	int i;
@@ -345,7 +345,7 @@  ftrace_print_symbols_seq(struct trace_seq *p, unsigned long val,
 	}
 
 	if (!p->len)
-		trace_seq_printf(p, "0x%lx", val);
+		trace_seq_printf(p, "0x%llx", val);
 		
 	trace_seq_putc(p, 0);