mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 18:09:56 +00:00
perf tools: Move parse_nsec_time to time-utils.c
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>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
fdf9dc4b34
commit
c284d669a2
@@ -1,5 +1,7 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
#include <linux/time64.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
@@ -7,7 +9,39 @@
|
|||||||
#include "perf.h"
|
#include "perf.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "time-utils.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,
|
static int parse_timestr_sec_nsec(struct perf_time_interval *ptime,
|
||||||
char *start_str, char *end_str)
|
char *start_str, char *end_str)
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ struct perf_time_interval {
|
|||||||
u64 start, end;
|
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);
|
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);
|
bool perf_time__skip_sample(struct perf_time_interval *ptime, u64 timestamp);
|
||||||
|
|||||||
@@ -400,39 +400,6 @@ void sighandler_dump_stack(int sig)
|
|||||||
raise(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)
|
int timestamp__scnprintf_usec(u64 timestamp, char *buf, size_t sz)
|
||||||
{
|
{
|
||||||
u64 sec = timestamp / NSEC_PER_SEC;
|
u64 sec = timestamp / NSEC_PER_SEC;
|
||||||
|
|||||||
@@ -179,8 +179,6 @@ static inline void *zalloc(size_t size)
|
|||||||
#undef tolower
|
#undef tolower
|
||||||
#undef toupper
|
#undef toupper
|
||||||
|
|
||||||
int parse_nsec_time(const char *str, u64 *ptime);
|
|
||||||
|
|
||||||
extern unsigned char sane_ctype[256];
|
extern unsigned char sane_ctype[256];
|
||||||
#define GIT_SPACE 0x01
|
#define GIT_SPACE 0x01
|
||||||
#define GIT_DIGIT 0x02
|
#define GIT_DIGIT 0x02
|
||||||
|
|||||||
Reference in New Issue
Block a user