Messages in this thread | | | Date | Wed, 27 May 2009 03:30:02 -0400 | From | Christoph Hellwig <> | Subject | Re: [PATCH v2 1/2] tracing/events: make __string() more general |
| |
On Wed, May 27, 2009 at 09:43:32AM +0800, Li Zefan wrote: > I'm not suffering from NULL str, so I'm not quite sure how you want __string() > deal with it.
The internals of __string is still magic to me, need to finish my advance cpp abuse degree first ;-)
But the expected outcome would be that when we get a NULL pointer as input we get a NULL pointer as output again.
What I currently do is:
TRACE_EVENT(xfs_dir2, TP_PROTO(struct xfs_da_args *args, int i, int j, int count), TP_ARGS(args, i, j, count),
TP_STRUCT__entry( __field(xfs_ino_t, ino) __array(char, name, TRACE_MAXNAMELEN) __field(int, namelen) ... ),
TP_fast_assign( __entry->ino = args->dp->i_ino; if (args->namelen) memcpy(__entry->name, args->name, min(args->namelen, TRACE_MAXNAMELEN)); __entry->namelen = args->namelen; ... ),
TP_printk("ino 0x%lld %pF name %.*s namelen %d hashval 0x%x " "inumber 0x%llx op_flags %s i %d j %d count %d", __entry->ino, (void *)__entry->caller_ip, min(__entry->namelen, TRACE_MAXNAMELEN), __entry->namelen ? __entry->name : NULL, __entry->namelen, ...) );
> > ---end quoted text---
| |