lkml.org 
[lkml]   [2012]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 08/13] perf target: Split out perf_target handling code
    Date
    For further work on perf_target, it'd be better off splitting
    the code into a separate file.

    Signed-off-by: Namhyung Kim <namhyung.kim@lge.com>
    ---
    tools/perf/Makefile | 2 ++
    tools/perf/perf.h | 9 +--------
    tools/perf/util/evlist.c | 1 +
    tools/perf/util/evsel.c | 1 +
    tools/perf/util/target.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
    tools/perf/util/target.h | 17 +++++++++++++++++
    tools/perf/util/usage.c | 34 ----------------------------------
    tools/perf/util/util.h | 2 --
    8 files changed, 67 insertions(+), 44 deletions(-)
    create mode 100644 tools/perf/util/target.c
    create mode 100644 tools/perf/util/target.h
    diff --git a/tools/perf/Makefile b/tools/perf/Makefile
    index e98e14c88532..4122a668952e 100644
    --- a/tools/perf/Makefile
    +++ b/tools/perf/Makefile
    @@ -300,6 +300,7 @@ LIB_H += util/cpumap.h
    LIB_H += util/top.h
    LIB_H += $(ARCH_INCLUDE)
    LIB_H += util/cgroup.h
    +LIB_H += util/target.h

    LIB_OBJS += $(OUTPUT)util/abspath.o
    LIB_OBJS += $(OUTPUT)util/alias.o
    @@ -361,6 +362,7 @@ LIB_OBJS += $(OUTPUT)util/util.o
    LIB_OBJS += $(OUTPUT)util/xyarray.o
    LIB_OBJS += $(OUTPUT)util/cpumap.o
    LIB_OBJS += $(OUTPUT)util/cgroup.o
    +LIB_OBJS += $(OUTPUT)util/target.o

    BUILTIN_OBJS += $(OUTPUT)builtin-annotate.o

    diff --git a/tools/perf/perf.h b/tools/perf/perf.h
    index 7e226c0e0e31..14f1034f14f9 100644
    --- a/tools/perf/perf.h
    +++ b/tools/perf/perf.h
    @@ -207,14 +207,7 @@ extern const char perf_version_string[];

    void pthread__unblock_sigwinch(void);

    -struct perf_target {
    - const char *pid;
    - const char *tid;
    - const char *cpu_list;
    - const char *uid_str;
    - uid_t uid;
    - bool system_wide;
    -};
    +#include "util/target.h"

    struct perf_record_opts {
    struct perf_target target;
    diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
    index 556d98af1a0b..183b199b0d09 100644
    --- a/tools/perf/util/evlist.c
    +++ b/tools/perf/util/evlist.c
    @@ -11,6 +11,7 @@
    #include <poll.h>
    #include "cpumap.h"
    #include "thread_map.h"
    +#include "target.h"
    #include "evlist.h"
    #include "evsel.h"
    #include <unistd.h>
    diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
    index d90598edcf1d..bb785a098ced 100644
    --- a/tools/perf/util/evsel.c
    +++ b/tools/perf/util/evsel.c
    @@ -14,6 +14,7 @@
    #include "util.h"
    #include "cpumap.h"
    #include "thread_map.h"
    +#include "target.h"

    #define FD(e, x, y) (*(int *)xyarray__entry(e->fd, x, y))
    #define GROUP_FD(group_fd, cpu) (*(int *)xyarray__entry(group_fd, cpu, 0))
    diff --git a/tools/perf/util/target.c b/tools/perf/util/target.c
    new file mode 100644
    index 000000000000..3fadf85dd7e3
    --- /dev/null
    +++ b/tools/perf/util/target.c
    @@ -0,0 +1,45 @@
    +/*
    + * Helper functions for handling target threads/cpus
    + *
    + * Copyright (C) 2012, LG Electronics, Namhyung Kim <namhyung.kim@lge.com>
    + *
    + * Released under the GPL v2.
    + */
    +
    +#include "target.h"
    +#include "debug.h"
    +
    +
    +void perf_target__validate(struct perf_target *target)
    +{
    + if (target->pid)
    + target->tid = target->pid;
    +
    + /* CPU and PID are mutually exclusive */
    + if (target->tid && target->cpu_list) {
    + ui__warning("WARNING: PID switch overriding CPU\n");
    + sleep(1);
    + target->cpu_list = NULL;
    + }
    +
    + /* UID and PID are mutually exclusive */
    + if (target->tid && target->uid_str) {
    + ui__warning("PID/TID switch overriding UID\n");
    + sleep(1);
    + target->uid_str = NULL;
    + }
    +
    + /* UID and CPU are mutually exclusive */
    + if (target->uid_str && target->cpu_list) {
    + ui__warning("UID switch overriding CPU\n");
    + sleep(1);
    + target->cpu_list = NULL;
    + }
    +
    + /* PID/UID and SYSTEM are mutually exclusive */
    + if ((target->tid || target->uid_str) && target->system_wide) {
    + ui__warning("PID/TID/UID switch overriding CPU\n");
    + sleep(1);
    + target->system_wide = false;
    + }
    +}
    diff --git a/tools/perf/util/target.h b/tools/perf/util/target.h
    new file mode 100644
    index 000000000000..1348065ada5e
    --- /dev/null
    +++ b/tools/perf/util/target.h
    @@ -0,0 +1,17 @@
    +#ifndef _PERF_TARGET_H
    +#define _PERF_TARGET_H
    +
    +#include "util.h"
    +
    +struct perf_target {
    + const char *pid;
    + const char *tid;
    + const char *cpu_list;
    + const char *uid_str;
    + uid_t uid;
    + bool system_wide;
    +};
    +
    +void perf_target__validate(struct perf_target *target);
    +
    +#endif /* _PERF_TARGET_H */
    diff --git a/tools/perf/util/usage.c b/tools/perf/util/usage.c
    index 228f0a558872..e851abc22ccc 100644
    --- a/tools/perf/util/usage.c
    +++ b/tools/perf/util/usage.c
    @@ -113,37 +113,3 @@ uid_t parse_target_uid(const char *str)

    return result->pw_uid;
    }
    -
    -void perf_target__validate(struct perf_target *target)
    -{
    - if (target->pid)
    - target->tid = target->pid;
    -
    - /* CPU and PID are mutually exclusive */
    - if (target->tid && target->cpu_list) {
    - ui__warning("WARNING: PID switch overriding CPU\n");
    - sleep(1);
    - target->cpu_list = NULL;
    - }
    -
    - /* UID and PID are mutually exclusive */
    - if (target->tid && target->uid_str) {
    - ui__warning("PID/TID switch overriding UID\n");
    - sleep(1);
    - target->uid_str = NULL;
    - }
    -
    - /* UID and CPU are mutually exclusive */
    - if (target->uid_str && target->cpu_list) {
    - ui__warning("UID switch overriding CPU\n");
    - sleep(1);
    - target->cpu_list = NULL;
    - }
    -
    - /* PID/UID and SYSTEM are mutually exclusive */
    - if ((target->tid || target->uid_str) && target->system_wide) {
    - ui__warning("PID/TID/UID switch overriding CPU\n");
    - sleep(1);
    - target->system_wide = false;
    - }
    -}
    diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
    index 3f05d6264dab..52be74c359d3 100644
    --- a/tools/perf/util/util.h
    +++ b/tools/perf/util/util.h
    @@ -246,12 +246,10 @@ unsigned long convert_unit(unsigned long value, char *unit);
    int readn(int fd, void *buf, size_t size);

    struct perf_event_attr;
    -struct perf_target;

    void event_attr_init(struct perf_event_attr *attr);

    uid_t parse_target_uid(const char *str);
    -void perf_target__validate(struct perf_target *target);

    #define _STR(x) #x
    #define STR(x) _STR(x)
    --
    1.7.10


    \
     
     \ /
      Last update: 2012-04-26 07:25    [W:1.236 / U:0.120 seconds]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean