Время работы Android (Linux) с использованием CLOCK_MONOTONIC

Согласно Справочнику разработчика Android uptimeMillis () возвращает количество миллисекунд с момента загрузки, не считая времени, потраченного на глубокое сон . Я проверил реализацию uptimeMillis () в моем коде, и это примерно так -

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;

Насколько я знаю, CLOCK_MONOTONIC отсчитывается от некоторой неуказанной точки линейно, включая время сна.

Вот мои сомнения -

  1. Если CLOCK_MONOTONIC включает время сна, почему uptimeMillis () не принимает его во внимание? Если я понимаю неверно и CLOCK_MONOTONIC не учитывает сон, то что мне следует использовать, чтобы получить время безотказной работы системы, включая сон?

  2. Что такое глубокий сон? Считается ли бездействие процессора глубоким сном?

  3. Какое значение неопределенной точки в Linux? Не могли бы вы указать в коде, где запускаются эти часы?

6
задан Pavan Manjunath 15 June 2011 в 17:26
поделиться