summaryrefslogtreecommitdiff
path: root/libbpf_android
diff options
context:
space:
mode:
authorMaciej Żenczykowski <maze@google.com>2021-01-21 16:45:58 -0800
committerMaciej Żenczykowski <maze@google.com>2021-01-21 17:39:33 -0800
commitcdf85a3148696e880c0e03c4b1d17f091ad57560 (patch)
tree19373c21412695505cb707bd296d6e3cbc1aad33 /libbpf_android
parentf7c0d993dd181db8271501eedffa41746446f089 (diff)
downloadbpf-cdf85a3148696e880c0e03c4b1d17f091ad57560.tar.gz
move waitForProgsLoaded() to header file
Test: atest, TreeHugger Signed-off-by: Maciej Żenczykowski <maze@google.com> Change-Id: I2f0035f2622ca2a8c10d29caff912f3f895f2607
Diffstat (limited to 'libbpf_android')
-rw-r--r--libbpf_android/Loader.cpp16
-rw-r--r--libbpf_android/include/libbpf_android.h13
2 files changed, 12 insertions, 17 deletions
diff --git a/libbpf_android/Loader.cpp b/libbpf_android/Loader.cpp
index aac9710..01f8964 100644
--- a/libbpf_android/Loader.cpp
+++ b/libbpf_android/Loader.cpp
@@ -39,7 +39,6 @@
#include <string>
#include <vector>
-#include <android-base/properties.h>
#include <android-base/strings.h>
#include <android-base/unique_fd.h>
@@ -678,20 +677,5 @@ int loadProg(const char* elfPath, bool* isCritical, const char* prefix) {
return ret;
}
-static bool waitSecondsForProgsLoaded(int seconds) {
- bool ok =
- android::base::WaitForProperty("bpf.progs_loaded", "1", std::chrono::seconds(seconds));
- if (!ok) ALOGW("Waited %ds for bpf.progs_loaded, still waiting...", seconds);
- return ok;
-}
-
-void waitForProgsLoaded() {
- if (waitSecondsForProgsLoaded(5)) return;
- if (waitSecondsForProgsLoaded(10)) return;
- if (waitSecondsForProgsLoaded(20)) return;
- while (!waitSecondsForProgsLoaded(60))
- ; // loop until success
-}
-
} // namespace bpf
} // namespace android
diff --git a/libbpf_android/include/libbpf_android.h b/libbpf_android/include/libbpf_android.h
index b1c6a0c..90c9906 100644
--- a/libbpf_android/include/libbpf_android.h
+++ b/libbpf_android/include/libbpf_android.h
@@ -19,6 +19,9 @@
#include <libbpf.h>
#include <linux/bpf.h>
+#include <log/log.h>
+
+#include <android-base/properties.h>
namespace android {
namespace bpf {
@@ -27,7 +30,15 @@ namespace bpf {
int loadProg(const char* elfPath, bool* isCritical, const char* prefix = "");
// Wait for bpfloader to load BPF programs.
-void waitForProgsLoaded();
+static inline void waitForProgsLoaded() {
+ // infinite loop until success with 5/10/20/40/60/60/60... delay
+ for (int delay = 5;; delay *= 2) {
+ if (delay > 60) delay = 60;
+ if (android::base::WaitForProperty("bpf.progs_loaded", "1", std::chrono::seconds(delay)))
+ return;
+ ALOGW("Waited %ds for bpf.progs_loaded, still waiting...", delay);
+ }
+}
} // namespace bpf
} // namespace android