Android(Linux) uptime mit CLOCK_MONOTONIC
Laut Android Developer Reference uptimeMillis()
gibt die Anzahl der Millisekunden seit dem starten, nicht eingerechnet die Zeit im deep-sleep -. Ich überprüfte die Umsetzung der
uptimeMillis()
in meinem code, und es ist in etwa so - -
struct timespec t;
t.tv_sec = t.tv_nsec = 0;
clock_gettime(CLOCK_MONOTONIC, &t);
return (int64_t)(t.tv_sec)*1000000000LL + t.tv_nsec;
Soweit ich weiß CLOCK_MONOTONIC
Grafen von einigen unbestimmten Punkt Linear einschließlich Schlaf-Zeit.
Hier meine Zweifel-
-
Wenn
CLOCK_MONOTONIC
umfasst die Zeit schlafen, wie kommtuptimeMillis()
nicht berücksichtigt? Wenn mein Verständnis falsch ist undCLOCK_MONOTONIC
nicht schlafen zu berücksichtigen, dann was sollte ich verwenden, um die Verfügbarkeit der Systeme, einschließlich Schlaf? -
Was ist deep sleep? Ist die CPU im Leerlauf auch als der deep-sleep?
-
Was ist der Wert von unbestimmten Punkt in Linux? Können Sie bitte hinweisen im code, wo diese Uhr wird gestartet?
Du musst angemeldet sein, um einen Kommentar abzugeben.
CLOCK_MONOTONIC Stoppt, wenn das system angehalten wird. Einige Leute dachten, dass das ein Fehler war, und anschließend gab es patches für das hinzufügen eines CLOCK_BOOTTIME Uhr: https://lwn.net/Articles/428176/ .
ich weiß nicht, ob diese patches haben doch in den mainline-kernel.CLOCK_BOOTTIME ist in ndk-9c - es dauerte nur 2,5 Jahre 😉 – WojciechAuszusetzen, denke ich.
IIRC einige Feste Zeit vor dem Start. Sie finden den genauen Wert, wenn Sie Graben sich in den kernel-Quellen. Dann wieder, den ganzen Punkt über es seiend unbekannter ist, dass es sich ändern könnte an jedem Punkt, so sich auf es scheint unklug zu mir.
CLOCK_BOOTTIME
ist noch nicht da! Aber nochSystemClock.elapsedRealtime()
ist in der Lage, es zu tun! Irgendeine Idee, wie ist es zu tun?