All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <fweisbec@gmail.com>
To: Ingo Molnar <mingo@elte.hu>, Steven Rostedt <rostedt@goodmis.org>
Cc: Zhaolei <zhaolei@cn.fujitsu.com>,
	Tom Zanussi <tzanussi@gmail.com>, Li Zefan <lizf@cn.fujitsu.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: Re: [PATCH 1/2 v3] tracing/events: provide string with undefined size support
Date: Tue, 21 Apr 2009 20:16:39 +0200	[thread overview]
Message-ID: <20090421181636.GA6001@nowhere> (raw)
In-Reply-To: <1240117295-6873-2-git-send-email-fweisbec@gmail.com>

On Sun, Apr 19, 2009 at 07:01:34AM +0200, Frederic Weisbecker wrote:
> This patch provides the support for dynamic size strings on
> event tracing.
> 
> The key concept is to use a structure with an ending char array field of
> undefined size and use such ability to allocate the minimal size on the
> ring buffer to make one or more string entries fit inside, as opposite
> to a fixed length strings with upper bound.
> 
> The strings themselves are represented using fields which have an offset
> value from the beginning of the entry.
> 
> This patch provides three new macros:
> 
> __string(item, src)
> 
> This one declares a string to the structure inside TP_STRUCT__entry.
> You need to provide the name of the string field and the source that will
> be copied inside.
> This will also add the dynamic size of the string needed for the ring
> buffer entry allocation.
> A stack allocated structure is used to temporarily store the offset
> of each strings, avoiding double calls to strlen() on each event
> insertion.
> 
> __get_str(field)
> 
> This one will give you a pointer to the string you have created. This
> is an abstract helper to resolve the absolute address given the field
> name which is a relative address from the beginning of the trace_structure.
> 
> __assign_str(dst, src)
> 
> Use this macro to automatically perform the string copy from src to
> dst. src must be a variable to assign and dst is the name of a __string
> field.
> 
> Example on how to use it:
> 
> TRACE_EVENT(my_event,
> 	TP_PROTO(char *src1, char *src2),
> 
> 	TP_ARGS(src1, src2),
> 	TP_STRUCT__entry(
> 		__string(str1, src1)
> 		__string(str2, src2)
> 	),
> 	TP_fast_assign(
> 		__assign_str(str1, src1);
> 		__assign_str(str2, src2);
> 	),
> 	TP_printk("%s %s", __get_str(src1), __get_str(src2))
> )
> 
> Of course you can mix-up any __field or __array inside this
> TRACE_EVENT. The position of the __string or __assign_str
> doesn't matter.
> 
> Changes in v2:
> 
> Address the suggestion of Steven Rostedt: drop the opening_string() macro
> and redefine __ending_string() to get the size of the string to be copied
> instead of overwritting the whole ring buffer allocation.
> 
> Changes in v3:
> 
> Address other suggestions of Steven Rostedt and Peter Zijlstra with
> some changes: drop the __ending_string and the need to have only one
> string field.
> Use offsets instead of absolute addresses.
> 
> [ Impact: better usage of memory for string tracing ]
> 
> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Cc: Li Zefan <lizf@cn.fujitsu.com>
> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
> ---


Hi,

Do you have doubts about this?
It would be nice to have a (N)Acked-by from you for these
two patches :-)

Thanks!


  parent reply	other threads:[~2009-04-21 18:16 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-19  5:01 [PATCH 0/2 v3] [GIT PULL] tracing/events: add the __string field Frederic Weisbecker
2009-04-19  5:01 ` [PATCH 1/2 v3] tracing/events: provide string with undefined size support Frederic Weisbecker
2009-04-19  6:15   ` Li Zefan
2009-04-19 12:35     ` Frederic Weisbecker
2009-04-21 18:16   ` Frederic Weisbecker [this message]
2009-04-21 18:33     ` Steven Rostedt
2009-04-21 21:58   ` Steven Rostedt
2009-04-21 22:00     ` Steven Rostedt
2009-04-21 22:12       ` Frederic Weisbecker
2009-04-21 22:21         ` Steven Rostedt
2009-04-21 23:32           ` [PATCH][GIT-PULL] tracing/events: protect __get_str() Frederic Weisbecker
2009-04-22 10:25             ` Ingo Molnar
2009-04-22 10:41           ` [PATCH 1/2 v3] tracing/events: provide string with undefined size support Ingo Molnar
2009-04-19  5:01 ` [PATCH 2/2 v3] tracing/lock: provide lock_acquired event support for dynamic size string Frederic Weisbecker
2009-04-21 21:59   ` Steven Rostedt
2009-04-19  6:14 ` [PATCH 0/2 v3] [GIT PULL] tracing/events: add the __string field Li Zefan
2009-04-19 12:34   ` Frederic Weisbecker
2009-04-19 13:49     ` [PATCH] tracing/core: Add current context on tracing recursion warning Frederic Weisbecker
2009-04-19 14:01       ` Ingo Molnar
2009-04-19 14:22         ` Frederic Weisbecker
2009-04-19 18:45           ` Ingo Molnar
2009-04-19 18:48             ` Frédéric Weisbecker
2009-04-19 18:47           ` Ingo Molnar
2009-04-19 17:28       ` Frederic Weisbecker
2009-04-20  0:37         ` Li Zefan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090421181636.GA6001@nowhere \
    --to=fweisbec@gmail.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizf@cn.fujitsu.com \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tzanussi@gmail.com \
    --cc=zhaolei@cn.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.