lkml.org 
[lkml]   [2018]   [Dec]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] tools lib traceevent: traceevent API cleanup
    Commit-ID:  34434e3633de8fde7d9a8bed374ba17897ac30ef
    Gitweb: https://git.kernel.org/tip/34434e3633de8fde7d9a8bed374ba17897ac30ef
    Author: Tzvetomir Stoyanov <tstoyanov@vmware.com>
    AuthorDate: Fri, 30 Nov 2018 10:44:10 -0500
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Fri, 30 Nov 2018 17:15:34 -0300

    tools lib traceevent: traceevent API cleanup

    In order to make libtraceevent into a proper library, its API should be
    straightforward. This patch hides few API functions, intended for
    internal usage only:

    tep_free_event(), tep_free_format_field(), __tep_data2host2(),
    __tep_data2host4() and __tep_data2host8().
    The patch also alignes the libtraceevent summary man page with
    these API changes.

    Signed-off-by: Tzvetomir Stoyanov <tstoyanov@vmware.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: http://lkml.kernel.org/r/20181130154647.891651290@goodmis.org
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/lib/traceevent/event-parse-api.c | 6 +++---
    tools/lib/traceevent/event-parse-local.h | 7 +++++++
    tools/lib/traceevent/event-parse.c | 13 ++++++++-----
    tools/lib/traceevent/event-parse.h | 16 ----------------
    4 files changed, 18 insertions(+), 24 deletions(-)

    diff --git a/tools/lib/traceevent/event-parse-api.c b/tools/lib/traceevent/event-parse-api.c
    index 0dc011154ee9..8b31c0e00ba3 100644
    --- a/tools/lib/traceevent/event-parse-api.c
    +++ b/tools/lib/traceevent/event-parse-api.c
    @@ -51,7 +51,7 @@ void tep_set_flag(struct tep_handle *tep, int flag)
    tep->flags |= flag;
    }

    -unsigned short __tep_data2host2(struct tep_handle *pevent, unsigned short data)
    +unsigned short tep_data2host2(struct tep_handle *pevent, unsigned short data)
    {
    unsigned short swap;

    @@ -64,7 +64,7 @@ unsigned short __tep_data2host2(struct tep_handle *pevent, unsigned short data)
    return swap;
    }

    -unsigned int __tep_data2host4(struct tep_handle *pevent, unsigned int data)
    +unsigned int tep_data2host4(struct tep_handle *pevent, unsigned int data)
    {
    unsigned int swap;

    @@ -80,7 +80,7 @@ unsigned int __tep_data2host4(struct tep_handle *pevent, unsigned int data)
    }

    unsigned long long
    -__tep_data2host8(struct tep_handle *pevent, unsigned long long data)
    +tep_data2host8(struct tep_handle *pevent, unsigned long long data)
    {
    unsigned long long swap;

    diff --git a/tools/lib/traceevent/event-parse-local.h b/tools/lib/traceevent/event-parse-local.h
    index 94746efef433..9a092dd4a86d 100644
    --- a/tools/lib/traceevent/event-parse-local.h
    +++ b/tools/lib/traceevent/event-parse-local.h
    @@ -89,4 +89,11 @@ struct tep_handle {
    char *trace_clock;
    };

    +void tep_free_event(struct tep_event *event);
    +void tep_free_format_field(struct tep_format_field *field);
    +
    +unsigned short tep_data2host2(struct tep_handle *pevent, unsigned short data);
    +unsigned int tep_data2host4(struct tep_handle *pevent, unsigned int data);
    +unsigned long long tep_data2host8(struct tep_handle *pevent, unsigned long long data);
    +
    #endif /* _PARSE_EVENTS_INT_H */
    diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
    index a3e7d0a75e11..ffa656b868a9 100644
    --- a/tools/lib/traceevent/event-parse.c
    +++ b/tools/lib/traceevent/event-parse.c
    @@ -3328,15 +3328,18 @@ tep_find_any_field(struct tep_event *event, const char *name)
    unsigned long long tep_read_number(struct tep_handle *pevent,
    const void *ptr, int size)
    {
    + unsigned long long val;
    +
    switch (size) {
    case 1:
    return *(unsigned char *)ptr;
    case 2:
    - return tep_data2host2(pevent, ptr);
    + return tep_data2host2(pevent, *(unsigned short *)ptr);
    case 4:
    - return tep_data2host4(pevent, ptr);
    + return tep_data2host4(pevent, *(unsigned int *)ptr);
    case 8:
    - return tep_data2host8(pevent, ptr);
    + memcpy(&val, (ptr), sizeof(unsigned long long));
    + return tep_data2host8(pevent, val);
    default:
    /* BUG! */
    return 0;
    @@ -4062,7 +4065,7 @@ static void print_str_arg(struct trace_seq *s, void *data, int size,
    f = tep_find_any_field(event, arg->string.string);
    arg->string.offset = f->offset;
    }
    - str_offset = tep_data2host4(pevent, data + arg->string.offset);
    + str_offset = tep_data2host4(pevent, *(unsigned int *)(data + arg->string.offset));
    str_offset &= 0xffff;
    print_str_to_seq(s, format, len_arg, ((char *)data) + str_offset);
    break;
    @@ -4080,7 +4083,7 @@ static void print_str_arg(struct trace_seq *s, void *data, int size,
    f = tep_find_any_field(event, arg->bitmask.bitmask);
    arg->bitmask.offset = f->offset;
    }
    - bitmask_offset = tep_data2host4(pevent, data + arg->bitmask.offset);
    + bitmask_offset = tep_data2host4(pevent, *(unsigned int *)(data + arg->bitmask.offset));
    bitmask_size = bitmask_offset >> 16;
    bitmask_offset &= 0xffff;
    print_bitmask_to_seq(pevent, s, format, len_arg,
    diff --git a/tools/lib/traceevent/event-parse.h b/tools/lib/traceevent/event-parse.h
    index 950ad185a5c4..35d37087d3c5 100644
    --- a/tools/lib/traceevent/event-parse.h
    +++ b/tools/lib/traceevent/event-parse.h
    @@ -409,20 +409,6 @@ void tep_print_plugins(struct trace_seq *s,
    typedef char *(tep_func_resolver_t)(void *priv,
    unsigned long long *addrp, char **modp);
    void tep_set_flag(struct tep_handle *tep, int flag);
    -unsigned short __tep_data2host2(struct tep_handle *pevent, unsigned short data);
    -unsigned int __tep_data2host4(struct tep_handle *pevent, unsigned int data);
    -unsigned long long
    -__tep_data2host8(struct tep_handle *pevent, unsigned long long data);
    -
    -#define tep_data2host2(pevent, ptr) __tep_data2host2(pevent, *(unsigned short *)(ptr))
    -#define tep_data2host4(pevent, ptr) __tep_data2host4(pevent, *(unsigned int *)(ptr))
    -#define tep_data2host8(pevent, ptr) \
    -({ \
    - unsigned long long __val; \
    - \
    - memcpy(&__val, (ptr), sizeof(unsigned long long)); \
    - __tep_data2host8(pevent, __val); \
    -})

    static inline int tep_host_bigendian(void)
    {
    @@ -475,8 +461,6 @@ enum tep_errno tep_parse_format(struct tep_handle *pevent,
    struct tep_event **eventp,
    const char *buf,
    unsigned long size, const char *sys);
    -void tep_free_event(struct tep_event *event);
    -void tep_free_format_field(struct tep_format_field *field);

    void *tep_get_field_raw(struct trace_seq *s, struct tep_event *event,
    const char *name, struct tep_record *record,
    \
     
     \ /
      Last update: 2018-12-14 21:38    [W:5.206 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site