/*
- * Copyright (C) 2014-2015 Intel Corporation.
- */
+// Copyright (c) 2015 Intel Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+*/
#include <stdlib.h>
#include <fcntl.h>
#include <utils/Log.h>
#include <hardware/sensors.h>
#include <utils/Atomic.h>
-#include <linux/android_alarm.h>
#include "common.h"
#include "utils.h"
+#include <errno.h>
/* Note:
*
}
-int64_t get_timestamp_realtime (void)
+int64_t get_timestamp (clockid_t clock_id)
{
- struct timespec ts = {0};
- clock_gettime(CLOCK_REALTIME, &ts);
+ struct timespec ts = {0, 0};
- 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;