On 07/17, Oleg Nesterov wrote:
>
> f_next() looks overcomplicated, and it is not strictly correct
> even if this doesn't matter.

Honestly, I do not know what the changelog can say to explain
this patch except "make the code simpler/cleaner".

To simplify the review, please see f_next/f_start with this patch
applied below. f_show() does field = list_entry(v, ...).

Probably makes sense anyway, I even tried to test it. So I would
not mind if you apply it as a separate cleanup ;)

Oleg.

static void *f_next(struct seq_file *m, void *v, loff_t *pos)
{
        struct ftrace_event_call *call = m->private;
        struct list_head *common_head = &ftrace_common_fields;
        struct list_head *head = trace_get_fields(call);
        struct list_head *node = v;

        (*pos)++;

        switch ((unsigned long)v) {
        case FORMAT_HEADER:
                node = common_head;
                break;

        case FORMAT_FIELD_SEPERATOR:
                node = head;
                break;

        case FORMAT_PRINTFMT:
                /* all done */
                return NULL;
        }

        node = node->prev;
        if (node == common_head)
                return (void *)FORMAT_FIELD_SEPERATOR;
        else if (node == head)
                return (void *)FORMAT_PRINTFMT;
        else
                return node;
}

static void *f_start(struct seq_file *m, loff_t *pos)
{
        void *p = (void *)FORMAT_HEADER;
        loff_t l = 0;

        while (p && l < *pos)
                p = f_next(m, p, &l);

        return p;
}

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to