make getBpfSupportLevel() cached
Test: build, atest
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I6948934c88ce8268ad38e8c0061807a81f5ea4bb
diff --git a/libbpf_android/BpfUtils.cpp b/libbpf_android/BpfUtils.cpp
index 3fc7cc9..c175d98 100644
--- a/libbpf_android/BpfUtils.cpp
+++ b/libbpf_android/BpfUtils.cpp
@@ -106,7 +106,7 @@
}
}
-BpfLevel getBpfSupportLevel() {
+static BpfLevel getUncachedBpfSupportLevel() {
struct utsname buf;
int kernel_version_major;
int kernel_version_minor;
@@ -135,5 +135,17 @@
return BpfLevel::NONE;
}
+BpfLevel getBpfSupportLevel() {
+ static bool initialized = false;
+ static BpfLevel cache;
+
+ if (!initialized) {
+ initialized = true;
+ cache = getUncachedBpfSupportLevel();
+ }
+
+ return cache;
+}
+
} // namespace bpf
} // namespace android