if (init_count == 0 || handle < 0 || handle >= sensor_count)
return -EINVAL;
- entry_ts = get_timestamp_boot();
+ entry_ts = get_timestamp_thread();
/*
* The Intel sensor hub seems to have trouble enabling sensors before
ret = sensor_activate(handle, enabled, 0);
- elapsed_ms = (int) ((get_timestamp_boot() - entry_ts) / 1000000);
+ elapsed_ms = (int) ((get_timestamp_thread() - entry_ts) / 1000000);
if (elapsed_ms) {
if (enabled)
}
-int64_t get_timestamp_realtime (void)
+int64_t get_timestamp (clockid_t clock_id)
{
struct timespec ts = {0};
- clock_gettime(CLOCK_REALTIME, &ts);
- return 1000000000LL * ts.tv_sec + ts.tv_nsec;
+ if (!clock_gettime(clock_id, &ts))
+ return 1000000000LL * ts.tv_sec + ts.tv_nsec;
+ else /* in this case errno is set appropriately */
+ return -1;
}
+int64_t get_timestamp_realtime (void)
+{
+ return get_timestamp(CLOCK_REALTIME);
+}
int64_t get_timestamp_boot (void)
{
- struct timespec ts = {0};
- clock_gettime(CLOCK_BOOTTIME, &ts);
-
- return 1000000000LL * ts.tv_sec + ts.tv_nsec;
+ return get_timestamp(CLOCK_BOOTTIME);
}
+int64_t get_timestamp_thread (void)
+{
+ return get_timestamp(CLOCK_THREAD_CPUTIME_ID);
+}
int64_t get_timestamp_monotonic (void)
{
- struct timespec ts = {0};
- clock_gettime(CLOCK_MONOTONIC, &ts);
-
- return 1000000000LL * ts.tv_sec + ts.tv_nsec;
+ return get_timestamp(CLOCK_MONOTONIC);
}
-
void set_timestamp (struct timespec *out, int64_t target_ns)
{
out->tv_sec = target_ns / 1000000000LL;
void set_timestamp (struct timespec *out, int64_t target_ns);
int64_t get_timestamp_boot (void);
+int64_t get_timestamp_thread (void);
int64_t get_timestamp_realtime (void);
int64_t get_timestamp_monotonic (void);