2017-08-28 04:57:54

by Zhou Chengming

[permalink] [raw]
Subject: [PATCH] tracing: make dynamic types can use __TRACE_LAST_TYPE

Obviously, trace_events that defined staticly in trace.h won't use
__TRACE_LAST_TYPE, so make dynamic types can use it. And some
minor changes to trace_search_list() to make code clearer.

Signed-off-by: Zhou Chengming <[email protected]>
---
kernel/trace/trace_output.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
index bac629a..dcb146f 100644
--- a/kernel/trace/trace_output.c
+++ b/kernel/trace/trace_output.c
@@ -19,7 +19,7 @@

static struct hlist_head event_hash[EVENT_HASHSIZE] __read_mostly;

-static int next_event_type = __TRACE_LAST_TYPE + 1;
+static int next_event_type = __TRACE_LAST_TYPE;

enum print_line_t trace_print_bputs_msg_only(struct trace_iterator *iter)
{
@@ -696,7 +696,7 @@ static int trace_search_list(struct list_head **list)

if (list_empty(&ftrace_event_list)) {
*list = &ftrace_event_list;
- return last + 1;
+ return last;
}

/*
@@ -704,17 +704,17 @@ static int trace_search_list(struct list_head **list)
* lets see if somebody freed one.
*/
list_for_each_entry(e, &ftrace_event_list, list) {
- if (e->type != last + 1)
+ if (e->type != last)
break;
last++;
}

/* Did we used up all 65 thousand events??? */
- if ((last + 1) > TRACE_EVENT_TYPE_MAX)
+ if (last > TRACE_EVENT_TYPE_MAX)
return 0;

*list = &e->list;
- return last + 1;
+ return last;
}

void trace_event_read_lock(void)
@@ -777,7 +777,7 @@ int register_trace_event(struct trace_event *event)

list_add_tail(&event->list, list);

- } else if (event->type > __TRACE_LAST_TYPE) {
+ } else if (event->type >= __TRACE_LAST_TYPE) {
printk(KERN_WARNING "Need to add type to trace.h\n");
WARN_ON(1);
goto out;
--
1.8.3.1


2017-08-28 11:01:52

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] tracing: make dynamic types can use __TRACE_LAST_TYPE

On Mon, 28 Aug 2017 12:59:08 +0800
Zhou Chengming <[email protected]> wrote:

> Obviously, trace_events that defined staticly in trace.h won't use
> __TRACE_LAST_TYPE, so make dynamic types can use it. And some
> minor changes to trace_search_list() to make code clearer.

Is there some reason to do this? I'm not sure it makes the code any
clearer. It looks like churn for churn sake. Which means that it can
cause a bug, and requires a bit of work to verify it does not.

Now if there's other work that is being done that requires this change,
then I have no problem adding it. But if it is just to "make it
clearer" then no, I'm not adding it.

-- Steve

>
> Signed-off-by: Zhou Chengming <[email protected]>