waitForProgsLoaded() - reduce log spaminess

Logging every 5s isn't actually useful and it just gets the important stuff out
of log buffers.

Test: adb logcat -s 'bpfloader:D' 'BpfUtils:D' 'LibBpfLoader:D'
  ...
  06-17 01:02:34.205   433   433 E bpfloader: --- DO NOT EXPECT SYSTEM TO BOOT SUCCESSFULLY ---
  06-17 01:02:38.103   335   335 W LibBpfLoader: Waited 5s for bpf.progs_loaded, still waiting...
  06-17 01:02:48.104   335   335 W LibBpfLoader: Waited 10s for bpf.progs_loaded, still waiting...
  06-17 01:03:08.104   335   335 W LibBpfLoader: Waited 20s for bpf.progs_loaded, still waiting...
  06-17 01:04:12.226   335   335 W LibBpfLoader: Waited 60s for bpf.progs_loaded, still waiting...
  06-17 01:04:17.628  1324  1324 W LibBpfLoader: Waited 5s for bpf.progs_loaded, still waiting...
  06-17 01:04:27.629  1324  1324 W LibBpfLoader: Waited 10s for bpf.progs_loaded, still waiting...
  06-17 01:04:47.629  1324  1324 W LibBpfLoader: Waited 20s for bpf.progs_loaded, still waiting...
  06-17 01:05:50.163  1324  1324 W LibBpfLoader: Waited 60s for bpf.progs_loaded, still waiting...
  06-17 01:05:55.551  1741  1741 W LibBpfLoader: Waited 5s for bpf.progs_loaded, still waiting...

Bug: 150040815
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I77b82bf44141df8ffab1d11d01a89c3927fbe827
diff --git a/libbpf_android/Loader.cpp b/libbpf_android/Loader.cpp
index 5a65c1b..da6a109 100644
--- a/libbpf_android/Loader.cpp
+++ b/libbpf_android/Loader.cpp
@@ -665,12 +665,21 @@
     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 (!android::bpf::isBpfSupported()) return;
 
-    while (!android::base::WaitForProperty("bpf.progs_loaded", "1", std::chrono::seconds(5))) {
-        ALOGW("Waited 5s for bpf.progs_loaded, still waiting...");
-    }
+    if (waitSecondsForProgsLoaded(5)) return;
+    if (waitSecondsForProgsLoaded(10)) return;
+    if (waitSecondsForProgsLoaded(20)) return;
+    while (!waitSecondsForProgsLoaded(60))
+        ;  // loop until success
 }
 
 }  // namespace bpf