OSDN Git Service

perf tools: Move parse_nsec_time to time-utils.c
authorDavid Ahern <dsa@cumulusnetworks.com>
Tue, 29 Nov 2016 17:15:42 +0000 (10:15 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 1 Dec 2016 16:02:39 +0000 (13:02 -0300)
Code move only; no functional change intended.

Committer notes:

Fix the build on Ubuntu 16.04 x86-64 cross-compiling to S/390, with this
set of auto-detected features:

  ...                         dwarf: [ on  ]
  ...            dwarf_getlocations: [ on  ]
  ...                         glibc: [ on  ]
  ...                          gtk2: [ OFF ]
  ...                      libaudit: [ OFF ]
  ...                        libbfd: [ OFF ]
  ...                        libelf: [ on  ]
  ...                       libnuma: [ OFF ]
  ...        numa_num_possible_cpus: [ OFF ]
  ...                       libperl: [ OFF ]
  ...                     libpython: [ OFF ]
  ...                      libslang: [ OFF ]
  ...                     libcrypto: [ OFF ]
  ...                     libunwind: [ OFF ]
  ...            libdw-dwarf-unwind: [ on  ]
  ...                          zlib: [ on  ]
  ...                          lzma: [ OFF ]
  ...                     get_cpuid: [ OFF ]
  ...                           bpf: [ on  ]

Where it was failing with:

    CC       /tmp/build/perf/util/time-utils.o
  util/time-utils.c: In function 'parse_nsec_time':
  util/time-utils.c:17:13: error: implicit declaration of function 'strtoul' [-Werror=implicit-function-declaration]
    time_sec = strtoul(str, &end, 10);
               ^
  util/time-utils.c:17:2: error: nested extern declaration of 'strtoul' [-Werror=nested-externs]
    time_sec = strtoul(str, &end, 10);
    ^
  util/time-utils.c: In function 'perf_time__parse_str':
  util/time-utils.c:93:2: error: implicit declaration of function 'free' [-Werror=implicit-function-declaration]
    free(str);
    ^
  util/time-utils.c:93:2: error: incompatible implicit declaration of built-in function 'free' [-Werror]
  util/time-utils.c:93:2: note: include '<stdlib.h>' or provide a declaration of 'free'

Do as suggested and add a '#include <stdlib.h>' to get the free() and strtoul()
declarations and fix the build.

Signed-off-by: David Ahern <dsahern@gmail.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1480439746-42695-3-git-send-email-dsahern@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/time-utils.c
tools/perf/util/time-utils.h
tools/perf/util/util.c
tools/perf/util/util.h

index 0443b2a..d1b21c7 100644 (file)
@@ -1,5 +1,7 @@
+#include <stdlib.h>
 #include <string.h>
 #include <sys/time.h>
+#include <linux/time64.h>
 #include <time.h>
 #include <errno.h>
 #include <inttypes.h>
@@ -7,7 +9,39 @@
 #include "perf.h"
 #include "debug.h"
 #include "time-utils.h"
-#include "util.h"
+
+int parse_nsec_time(const char *str, u64 *ptime)
+{
+       u64 time_sec, time_nsec;
+       char *end;
+
+       time_sec = strtoul(str, &end, 10);
+       if (*end != '.' && *end != '\0')
+               return -1;
+
+       if (*end == '.') {
+               int i;
+               char nsec_buf[10];
+
+               if (strlen(++end) > 9)
+                       return -1;
+
+               strncpy(nsec_buf, end, 9);
+               nsec_buf[9] = '\0';
+
+               /* make it nsec precision */
+               for (i = strlen(nsec_buf); i < 9; i++)
+                       nsec_buf[i] = '0';
+
+               time_nsec = strtoul(nsec_buf, &end, 10);
+               if (*end != '\0')
+                       return -1;
+       } else
+               time_nsec = 0;
+
+       *ptime = time_sec * NSEC_PER_SEC + time_nsec;
+       return 0;
+}
 
 static int parse_timestr_sec_nsec(struct perf_time_interval *ptime,
                                  char *start_str, char *end_str)
index 8f3e0e3..c1f197c 100644 (file)
@@ -5,6 +5,8 @@ struct perf_time_interval {
        u64 start, end;
 };
 
+int parse_nsec_time(const char *str, u64 *ptime);
+
 int perf_time__parse_str(struct perf_time_interval *ptime, const char *ostr);
 
 bool perf_time__skip_sample(struct perf_time_interval *ptime, u64 timestamp);
index 67ac765..9ddd988 100644 (file)
@@ -400,39 +400,6 @@ void sighandler_dump_stack(int sig)
        raise(sig);
 }
 
-int parse_nsec_time(const char *str, u64 *ptime)
-{
-       u64 time_sec, time_nsec;
-       char *end;
-
-       time_sec = strtoul(str, &end, 10);
-       if (*end != '.' && *end != '\0')
-               return -1;
-
-       if (*end == '.') {
-               int i;
-               char nsec_buf[10];
-
-               if (strlen(++end) > 9)
-                       return -1;
-
-               strncpy(nsec_buf, end, 9);
-               nsec_buf[9] = '\0';
-
-               /* make it nsec precision */
-               for (i = strlen(nsec_buf); i < 9; i++)
-                       nsec_buf[i] = '0';
-
-               time_nsec = strtoul(nsec_buf, &end, 10);
-               if (*end != '\0')
-                       return -1;
-       } else
-               time_nsec = 0;
-
-       *ptime = time_sec * NSEC_PER_SEC + time_nsec;
-       return 0;
-}
-
 int timestamp__scnprintf_usec(u64 timestamp, char *buf, size_t sz)
 {
        u64  sec = timestamp / NSEC_PER_SEC;
index 79662d6..1d639e3 100644 (file)
@@ -179,8 +179,6 @@ static inline void *zalloc(size_t size)
 #undef tolower
 #undef toupper
 
-int parse_nsec_time(const char *str, u64 *ptime);
-
 extern unsigned char sane_ctype[256];
 #define GIT_SPACE              0x01
 #define GIT_DIGIT              0x02