summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej Żenczykowski <maze@google.com>2022-05-20 16:44:06 -0700
committerCherrypicker Worker <android-build-cherrypicker-worker@google.com>2022-05-24 09:25:58 +0000
commitaf617ca0aa133404cbb8d4c8cf4403e55d9ddf27 (patch)
treea5a5f8f30dc2852af00d6c00a0450af86b1ac6f9
parent4dfce18208b46aa8352e757f6f9601d88148324e (diff)
downloadbpf-af617ca0aa133404cbb8d4c8cf4403e55d9ddf27.tar.gz
ease debugging - print pinned bpf prog & map ids
combined with content of /proc/${pid}/fd/${fd} and /proc/${pid}/fdinfo/${fd} this allows figuring out which programs/maps a process continues to have open See: adbz logcat -d | egrep '(map|prog) .* id' adbz root adbz_bpf_progs_and_maps Bug: 230880517 Test: TreeHugger Signed-off-by: Maciej Żenczykowski <maze@google.com> Change-Id: I66c7fa12d079257486569105368bf1eea2d3ab0c (cherry picked from commit 57412c2a27a53be306b5c389babfb3a47090ab88) Merged-In: I66c7fa12d079257486569105368bf1eea2d3ab0c
-rw-r--r--libbpf_android/Loader.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/libbpf_android/Loader.cpp b/libbpf_android/Loader.cpp
index b2f15cc..5f2bc70 100644
--- a/libbpf_android/Loader.cpp
+++ b/libbpf_android/Loader.cpp
@@ -30,9 +30,9 @@
#include <sys/wait.h>
#include <unistd.h>
-// This is BpfLoader v0.13
+// This is BpfLoader v0.14
#define BPFLOADER_VERSION_MAJOR 0u
-#define BPFLOADER_VERSION_MINOR 13u
+#define BPFLOADER_VERSION_MINOR 14u
#define BPFLOADER_VERSION ((BPFLOADER_VERSION_MAJOR << 16) | BPFLOADER_VERSION_MINOR)
#include "bpf/BpfUtils.h"
@@ -713,6 +713,15 @@ static int createMaps(const char* elfPath, ifstream& elfFile, vector<unique_fd>&
if (ret) return -errno;
}
+ struct bpf_map_info map_info = {};
+ __u32 map_info_len = sizeof(map_info);
+ int rv = bpf_obj_get_info_by_fd(fd, &map_info, &map_info_len);
+ if (rv) {
+ ALOGE("bpf_obj_get_info_by_fd failed, ret: %d [%d]\n", rv, errno);
+ } else {
+ ALOGI("map %s id %d\n", mapPinLoc.c_str(), map_info.id);
+ }
+
mapFds.push_back(std::move(fd));
}
@@ -890,6 +899,15 @@ static int loadCodeSections(const char* elfPath, vector<codeSection>& cs, const
}
}
+ struct bpf_prog_info prog_info = {};
+ __u32 prog_info_len = sizeof(prog_info);
+ int rv = bpf_obj_get_info_by_fd(fd, &prog_info, &prog_info_len);
+ if (rv) {
+ ALOGE("bpf_obj_get_info_by_fd failed, ret: %d [%d]\n", rv, errno);
+ } else {
+ ALOGI("prog %s id %d\n", progPinLoc.c_str(), prog_info.id);
+ }
+
cs[i].prog_fd.reset(fd);
}