1 /* 2 * Copyright (C) 2015 Intel Corporation 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include "Utils.hpp" 18 get_timestamp(clockid_t clock_id)19static int64_t get_timestamp(clockid_t clock_id) 20 { 21 struct timespec ts = {0, 0}; 22 23 if (!clock_gettime(clock_id, &ts)) 24 return 1000000000LL * ts.tv_sec + ts.tv_nsec; 25 else /* in this case errno is set appropriately */ 26 return -1; 27 } 28 get_timestamp_monotonic()29int64_t get_timestamp_monotonic() 30 { 31 return get_timestamp(CLOCK_MONOTONIC); 32 } 33 set_timestamp(struct timespec * out,int64_t target_ns)34void set_timestamp(struct timespec *out, int64_t target_ns) 35 { 36 out->tv_sec = target_ns / 1000000000LL; 37 out->tv_nsec = target_ns % 1000000000LL; 38 } 39