Messages in this thread Patch in this message | | | Date | Tue, 19 Jan 2010 15:34:01 +0800 | From | Lai Jiangshan <> | Subject | [PATCH 2/6] tracing: event_id_read() uses simple buffer instead of trace_seq |
| |
It seems that struct trace_seq is too heavy for event_id_read(). we use simple buffer instead of struct trace_seq.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> --- diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 04d3f90..835b370 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -604,23 +604,16 @@ static ssize_t event_id_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos) { struct ftrace_event_call *call = filp->private_data; - struct trace_seq *s; - int r; + char buf[20]; + int len; if (*ppos) return 0; - s = kmalloc(sizeof(*s), GFP_KERNEL); - if (!s) - return -ENOMEM; + len = snprintf(buf, sizeof(buf), "%d\n", call->id); + len = simple_read_from_buffer(ubuf, cnt, ppos, buf, len); - trace_seq_init(s); - trace_seq_printf(s, "%d\n", call->id); - - r = simple_read_from_buffer(ubuf, cnt, ppos, - s->buffer, s->len); - kfree(s); - return r; + return len; } static ssize_t
| |