diff options
author | Maciej Żenczykowski <maze@google.com> | 2021-01-21 16:45:58 -0800 |
---|---|---|
committer | Maciej Żenczykowski <maze@google.com> | 2021-01-21 17:39:33 -0800 |
commit | cdf85a3148696e880c0e03c4b1d17f091ad57560 (patch) | |
tree | 19373c21412695505cb707bd296d6e3cbc1aad33 /libbpf_android | |
parent | f7c0d993dd181db8271501eedffa41746446f089 (diff) | |
download | bpf-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.cpp | 16 | ||||
-rw-r--r-- | libbpf_android/include/libbpf_android.h | 13 |
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 |