X-Git-Url: http://git.osdn.net/view?p=android-x86%2Fhardware-intel-libsensors.git;a=blobdiff_plain;f=utils.c;h=488b70af4f09afa90f930b7b0238b99291b730ce;hp=4dd316fdca08f75abf165ebd108acea7a1d06254;hb=3d94158c5cb05868a1a3a46e53fe60ba843b0079;hpb=9b8b8968da44117cb1671be9b1f9d4c21b3fdaf3 diff --git a/utils.c b/utils.c index 4dd316f..488b70a 100644 --- a/utils.c +++ b/utils.c @@ -188,33 +188,36 @@ int sysfs_read_str(const char path[PATH_MAX], char *buf, int buf_len) } -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;