[lttng-dev] [PATCH] Expose kernel tracer to user-space (version 5)

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Mon Jul 2 11:14:58 EDT 2012


* Francis Giraldeau (francis.giraldeau at gmail.com) wrote:
> Le 2012-07-02 16:13, Mathieu Desnoyers a écrit :
> > * Francis Giraldeau (francis.giraldeau at gmail.com) wrote:
> >> By writing to the file /proc/lttng, a user-space application creates a
> >> kernel event. The event's payload is by default UTF-8 text, but any data
> >> can be written, up to 1024 bytes. Null-character is optional and is not
> >> enforced. The event uses sequence for space efficiency and to store any
> >> data as payload.
> > 
> > Why limit to 1024 bytes ? We could use a string_from_user, and write it
> > into a null-terminated string instead.
> 
> This is the same limit as printk:
> 
>   #define LOG_LINE_MAX 1024
> 
> We can't use string_from_user because it's not possible to assume that
> the string from user-space is null terminated and we can't changed it in
> order to avoid double copy. Thus, I think the current mechanism is
> appropriate.

Agreed that the sequence is appropriate in that case. However, why the
1024 byte limit ? What is the technical reason for having this limit ?
By understanding why we have it, we can find a way to remove it...

> 
> Anyway, if the application really wants all the data to be written, then
> it can create another event with the remaining data, since the number of
> bytes written is returned.

I'd like to avoid that. Ideally, I'd let the maximum event size be
limited by the packet size, which is configurable by the user.

> 
> >> The feature is enabled when both lttng-uevent and lttng-probe-uevent are
> >> loaded.
> > 
> > Why not combine those two into a single module ?
> 
> The problem is that the probe code creates it's own module_init and
> module_exit functions, and I didn't found a way to override properly and
> still call the probe registration. The easy way was to create two
> modules, but yes I would prefer it to be combined. What can be done for
> that?

#define TP_MODULE_OVERRIDE

before including the trace header.

see probes/lttng-events.h.

Thanks,

Mathieu

> 
> >> Module unload must be prevented while lttng-uevent is being used.
> >> rcu_synchronized() is call on module unload, and thus rcu_read_lock() can be
> > 
> > is call -> is called, or is invoked
> 
> fixed.
> 
> Thanks!
> 
> Francis
> 



> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev


-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list