Snap for 11400057 from 3f91c6568189b02ba03e5b9aa75d613be2dd2a5b to simpleperf-release
Change-Id: I1701ad25d13298ad75a9d050400d1cb319e77461
diff --git a/libbpf-tools/Android.bp b/libbpf-tools/Android.bp
index 8bf6064..e24b2c0 100644
--- a/libbpf-tools/Android.bp
+++ b/libbpf-tools/Android.bp
@@ -28,7 +28,6 @@
name: "bcc_bpf_defaults",
compile_multilib: "first",
cflags: [
- "--target=bpf",
"-fno-data-sections",
"-fno-function-sections",
"-fno-stack-protector",
@@ -37,6 +36,8 @@
"-Wno-pointer-arith",
"-Wno-unused-command-line-argument",
"-Wno-unused-parameter",
+ "-mllvm -bpf-stack-size=1024",
+ "-g",
],
header_libs: [
"bpf_prog_headers",
@@ -68,6 +69,7 @@
],
},
},
+ bpf_target: true,
visibility: ["//visibility:private"],
}
diff --git a/libbpf-tools/biolatency.bpf.c b/libbpf-tools/biolatency.bpf.c
index 429412d..d0409fd 100644
--- a/libbpf-tools/biolatency.bpf.c
+++ b/libbpf-tools/biolatency.bpf.c
@@ -101,6 +101,7 @@
struct hist_key hkey = {};
struct hist *histp;
s64 delta;
+ u64 udelta;
if (filter_cg && !bpf_current_task_under_cgroup(&cgroup_map, 0))
return 0;
@@ -113,6 +114,8 @@
if (delta < 0)
goto cleanup;
+ udelta = (u64)delta;
+
if (targ_per_disk) {
struct gendisk *disk = get_disk(rq);
@@ -131,10 +134,10 @@
}
if (targ_ms)
- delta /= 1000000U;
+ udelta /= 1000000U;
else
- delta /= 1000U;
- slot = log2l(delta);
+ udelta /= 1000U;
+ slot = log2l(udelta);
if (slot >= MAX_SLOTS)
slot = MAX_SLOTS - 1;
__sync_fetch_and_add(&histp->slots[slot], 1);
diff --git a/libbpf-tools/biostacks.bpf.c b/libbpf-tools/biostacks.bpf.c
index 0ca6988..c1dce67 100644
--- a/libbpf-tools/biostacks.bpf.c
+++ b/libbpf-tools/biostacks.bpf.c
@@ -74,6 +74,7 @@
struct internal_rqinfo *i_rqinfop;
struct hist *histp;
s64 delta;
+ u64 udelta;
i_rqinfop = bpf_map_lookup_elem(&rqinfos, &rq);
if (!i_rqinfop)
@@ -81,14 +82,15 @@
delta = (s64)(ts - i_rqinfop->start_ts);
if (delta < 0)
goto cleanup;
+ udelta = (u64)delta;
histp = bpf_map_lookup_or_try_init(&hists, &i_rqinfop->rqinfo, &zero);
if (!histp)
goto cleanup;
if (targ_ms)
- delta /= 1000000U;
+ udelta /= 1000000U;
else
- delta /= 1000U;
- slot = log2l(delta);
+ udelta /= 1000U;
+ slot = log2l(udelta);
if (slot >= MAX_SLOTS)
slot = MAX_SLOTS - 1;
__sync_fetch_and_add(&histp->slots[slot], 1);
diff --git a/libbpf-tools/fsdist.bpf.c b/libbpf-tools/fsdist.bpf.c
index 1bf98e9..19bc51a 100644
--- a/libbpf-tools/fsdist.bpf.c
+++ b/libbpf-tools/fsdist.bpf.c
@@ -41,6 +41,7 @@
__u64 ts = bpf_ktime_get_ns();
__u64 *tsp, slot;
__s64 delta;
+ __u64 udelta;
tsp = bpf_map_lookup_elem(&starts, &tid);
if (!tsp)
@@ -53,12 +54,13 @@
if (delta < 0)
goto cleanup;
+ udelta = (__u64)delta;
if (in_ms)
- delta /= 1000000;
+ udelta /= 1000000;
else
- delta /= 1000;
+ udelta /= 1000;
- slot = log2l(delta);
+ slot = log2l(udelta);
if (slot >= MAX_SLOTS)
slot = MAX_SLOTS - 1;
__sync_fetch_and_add(&hists[op].slots[slot], 1);
diff --git a/libbpf-tools/offcputime.bpf.c b/libbpf-tools/offcputime.bpf.c
index cb20d50..3a36fa3 100644
--- a/libbpf-tools/offcputime.bpf.c
+++ b/libbpf-tools/offcputime.bpf.c
@@ -63,6 +63,7 @@
struct internal_key *i_keyp, i_key;
struct val_t *valp, val;
s64 delta;
+ u64 udelta;
u32 pid;
if (allow_record(prev)) {
@@ -94,13 +95,14 @@
delta = (s64)(bpf_ktime_get_ns() - i_keyp->start_ts);
if (delta < 0)
goto cleanup;
- delta /= 1000U;
- if (delta < min_block_ns || delta > max_block_ns)
+ udelta = (u64)delta;
+ udelta /= 1000U;
+ if (udelta < min_block_ns || udelta > max_block_ns)
goto cleanup;
valp = bpf_map_lookup_elem(&info, &i_keyp->key);
if (!valp)
goto cleanup;
- __sync_fetch_and_add(&valp->delta, delta);
+ __sync_fetch_and_add(&valp->delta, udelta);
cleanup:
bpf_map_delete_elem(&start, &pid);
diff --git a/libbpf-tools/runqlat.bpf.c b/libbpf-tools/runqlat.bpf.c
index 76e0553..1ddf976 100644
--- a/libbpf-tools/runqlat.bpf.c
+++ b/libbpf-tools/runqlat.bpf.c
@@ -80,6 +80,7 @@
u64 *tsp, slot;
u32 pid, hkey;
s64 delta;
+ u64 udelta;
if (filter_cg && !bpf_current_task_under_cgroup(&cgroup_map, 0))
return 0;
@@ -95,6 +96,7 @@
delta = bpf_ktime_get_ns() - *tsp;
if (delta < 0)
goto cleanup;
+ udelta = (u64)delta;
if (targ_per_process)
hkey = BPF_CORE_READ(next, tgid);
@@ -111,10 +113,10 @@
bpf_probe_read_kernel_str(&histp->comm, sizeof(histp->comm),
next->comm);
if (targ_ms)
- delta /= 1000000U;
+ udelta /= 1000000U;
else
- delta /= 1000U;
- slot = log2l(delta);
+ udelta /= 1000U;
+ slot = log2l(udelta);
if (slot >= MAX_SLOTS)
slot = MAX_SLOTS - 1;
__sync_fetch_and_add(&histp->slots[slot], 1);