Skip to content

Commit

Permalink
tracing: trace parser support for set_event
Browse files Browse the repository at this point in the history
Convert the parsing of the file 'set_event' to use the generic
trace_praser 'trace_get_user' function.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
LKML-Reference: <1252682969-3366-3-git-send-email-jolsa@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
  • Loading branch information
jolsa@redhat.com authored and Steven Rostedt committed Sep 11, 2009
1 parent b63f39e commit 4896636
Showing 1 changed file with 13 additions and 47 deletions.
60 changes: 13 additions & 47 deletions kernel/trace/trace_events.c
Original file line number Diff line number Diff line change
Expand Up @@ -230,11 +230,9 @@ static ssize_t
ftrace_event_write(struct file *file, const char __user *ubuf,
size_t cnt, loff_t *ppos)
{
struct trace_parser parser;
size_t read = 0;
int i, set = 1;
ssize_t ret;
char *buf;
char ch;

if (!cnt || cnt < 0)
return 0;
Expand All @@ -243,60 +241,28 @@ ftrace_event_write(struct file *file, const char __user *ubuf,
if (ret < 0)
return ret;

ret = get_user(ch, ubuf++);
if (ret)
return ret;
read++;
cnt--;

/* skip white space */
while (cnt && isspace(ch)) {
ret = get_user(ch, ubuf++);
if (ret)
return ret;
read++;
cnt--;
}

/* Only white space found? */
if (isspace(ch)) {
file->f_pos += read;
ret = read;
return ret;
}

buf = kmalloc(EVENT_BUF_SIZE+1, GFP_KERNEL);
if (!buf)
if (trace_parser_get_init(&parser, EVENT_BUF_SIZE + 1))
return -ENOMEM;

if (cnt > EVENT_BUF_SIZE)
cnt = EVENT_BUF_SIZE;
read = trace_get_user(&parser, ubuf, cnt, ppos);

if (trace_parser_loaded((&parser))) {
int set = 1;

i = 0;
while (cnt && !isspace(ch)) {
if (!i && ch == '!')
if (*parser.buffer == '!')
set = 0;
else
buf[i++] = ch;

ret = get_user(ch, ubuf++);
parser.buffer[parser.idx] = 0;

ret = ftrace_set_clr_event(parser.buffer + !set, set);
if (ret)
goto out_free;
read++;
cnt--;
goto out_put;
}
buf[i] = 0;

file->f_pos += read;

ret = ftrace_set_clr_event(buf, set);
if (ret)
goto out_free;

ret = read;

out_free:
kfree(buf);
out_put:
trace_parser_put(&parser);

return ret;
}
Expand Down

0 comments on commit 4896636

Please sign in to comment.