Revert "bpfloader: add option to clear maps on restart"
This reverts commit 93e809df417cbffad23693dd394ebdf991b635fd.
Reason for revert: belongs in aosp
Change-Id: I82c8db43bcda7de534689166d39f5ba5de191d72
diff --git a/libbpf_android/Android.bp b/libbpf_android/Android.bp
index 7e54478..c369c8c 100644
--- a/libbpf_android/Android.bp
+++ b/libbpf_android/Android.bp
@@ -108,7 +108,6 @@
],
required: [
- "bpf_autoclear_maps.o",
"bpf_load_tp_prog.o",
],
}
diff --git a/libbpf_android/BpfLoadTest.cpp b/libbpf_android/BpfLoadTest.cpp
index b219f84..7ea52a2 100644
--- a/libbpf_android/BpfLoadTest.cpp
+++ b/libbpf_android/BpfLoadTest.cpp
@@ -15,11 +15,8 @@
*/
#include <android-base/macros.h>
-#include <android-base/stringprintf.h>
-#include <android-base/strings.h>
#include <gtest/gtest.h>
#include <stdlib.h>
-#include <sys/sysinfo.h>
#include <unistd.h>
#include <iostream>
#include "include/bpf/BpfMap.h"
@@ -32,8 +29,6 @@
"/sys/fs/bpf/prog_bpf_load_tp_prog_tracepoint_sched_sched_switch";
constexpr const char tp_map_path[] = "/sys/fs/bpf/map_bpf_load_tp_prog_cpu_pid_map";
-constexpr const char tp_autoclear_map_path_prefix[] = "/sys/fs/bpf/map_bpf_autoclear_maps_autoclear_";
-
namespace android {
namespace bpf {
@@ -97,39 +92,5 @@
checkMapNonZero();
}
-TEST(BpfLoadAutoclearTest, bpfCheckMapClearing) {
- SKIP_IF_BPF_NOT_SUPPORTED;
-
- for (int i = 0; i < 2; i++) {
- EXPECT_EQ(android::bpf::loadProg("/system/etc/bpf/bpf_autoclear_maps.o"), 0);
- for (const auto &name : {"hash", "percpu_hash", "array", "percpu_array"}) {
- auto path = android::base::StringPrintf("%s%s", tp_autoclear_map_path_prefix, name);
- android::base::unique_fd mapFd(bpf_obj_get(path.c_str()));
- ASSERT_GT(mapFd, 0);
-
- size_t sz = android::base::StartsWith(name, "percpu") ? get_nprocs_conf() : 1;
- std::vector<uint32_t> vals(sz);
-
- uint32_t key;
- auto ret = android::bpf::getFirstMapKey(mapFd, &key);
- if (android::base::EndsWith(name, "hash")) {
- EXPECT_NE(ret, 0);
- EXPECT_EQ(errno, ENOENT);
- } else {
- uint32_t prevKey;
- std::vector<uint32_t> zeroes(vals.size(),0);
- do {
- ASSERT_EQ(findMapEntry(mapFd, &key, vals.data()),0);
- EXPECT_EQ(memcmp(vals.data(), zeroes.data(), vals.size()), 0);
- } while (prevKey = key, !android::bpf::getNextMapKey(mapFd, &prevKey, &key));
- }
- key = 0;
- std::fill(vals.begin(), vals.end(), 1);
- ASSERT_EQ(writeToMapEntry(mapFd, &key, vals.data(), BPF_ANY), 0);
- if (i == 1) unlink(path.c_str());
- }
- }
-}
-
} // namespace bpf
} // namespace android
diff --git a/libbpf_android/Loader.cpp b/libbpf_android/Loader.cpp
index 26d1200..3f23ae8 100644
--- a/libbpf_android/Loader.cpp
+++ b/libbpf_android/Loader.cpp
@@ -24,13 +24,11 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sys/sysinfo.h>
#include <sys/utsname.h>
#include <unistd.h>
#include "LoaderUtils.h"
#include "include/libbpf_android.h"
-#include <bpf/BpfUtils.h>
#include <cstdlib>
#include <fstream>
@@ -98,7 +96,6 @@
unsigned int map_flags;
unsigned int inner_map_idx;
unsigned int numa_node;
- bool clear_on_init;
};
static int readElfHeader(ifstream& elfFile, Elf64_Ehdr* eh) {
@@ -406,10 +403,6 @@
bool reuse = false;
mapPinLoc = string(BPF_FS_PATH) + "map_" + fname + "_" + string(mapNames[i]);
- if (access(mapPinLoc.c_str(), F_OK) == 0 && md[i].clear_on_init) {
- ret = unlink(mapPinLoc.c_str());
- if (ret < 0) return ret;
- }
if (access(mapPinLoc.c_str(), F_OK) == 0) {
fd.reset(bpf_obj_get(mapPinLoc.c_str()));
ALOGD("bpf_create_map reusing map %s, ret: %d\n", mapNames[i].c_str(), fd.get());
diff --git a/progs/include/bpf_helpers.h b/progs/include/bpf_helpers.h
index 679f7dd..e933021 100644
--- a/progs/include/bpf_helpers.h
+++ b/progs/include/bpf_helpers.h
@@ -43,17 +43,16 @@
static int (*bpf_map_delete_elem_unsafe)(void* map, void* key) = (void*)BPF_FUNC_map_delete_elem;
/* type safe macro to declare a map and related accessor functions */
-#define DEFINE_BPF_MAP_NO_ACCESSORS_CLEAR(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries, clear) \
+#define DEFINE_BPF_MAP_NO_ACCESSORS(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries) \
struct bpf_map_def SEC("maps") the_map = { \
.type = BPF_MAP_TYPE_##TYPE, \
.key_size = sizeof(TypeOfKey), \
.value_size = sizeof(TypeOfValue), \
.max_entries = (num_entries), \
- .clear_on_init = (clear), \
};
-#define DEFINE_BPF_MAP_CLEAR(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries, clear) \
- DEFINE_BPF_MAP_NO_ACCESSORS_CLEAR(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries, clear) \
+#define DEFINE_BPF_MAP(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries) \
+ DEFINE_BPF_MAP_NO_ACCESSORS(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries) \
\
static inline __always_inline __unused TypeOfValue* bpf_##the_map##_lookup_elem( \
TypeOfKey* k) { \
@@ -69,13 +68,6 @@
return bpf_map_delete_elem_unsafe(&the_map, k); \
};
-/* type safe macro to declare a map and related accessor functions */
-#define DEFINE_BPF_MAP_NO_ACCESSORS(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries) \
- DEFINE_BPF_MAP_NO_ACCESSORS_CLEAR(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries, false)
-
-#define DEFINE_BPF_MAP(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries) \
- DEFINE_BPF_MAP_CLEAR(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries, false)
-
static int (*bpf_probe_read)(void* dst, int size, void* unsafe_ptr) = (void*) BPF_FUNC_probe_read;
static int (*bpf_probe_read_str)(void* dst, int size, void* unsafe_ptr) = (void*) BPF_FUNC_probe_read_str;
static unsigned long long (*bpf_ktime_get_ns)(void) = (void*) BPF_FUNC_ktime_get_ns;
@@ -102,5 +94,4 @@
unsigned int map_flags;
unsigned int pad1;
unsigned int pad2;
- bool clear_on_init;
};