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