1 /* 2 * This file and its contents are supplied under the terms of the 3 * Common Development and Distribution License ("CDDL"), version 1.0. 4 * You may only use this file in accordance with the terms of version 5 * 1.0 of the CDDL. 6 * 7 * A full copy of the text of the CDDL should have accompanied this 8 * source. A copy of the CDDL is also available via the Internet at 9 * http://www.illumos.org/license/CDDL. 10 */ 11 12 /* 13 * Copyright 2016 Joyent, Inc. 14 */ 15 16 17 18 #include "thr_uberdata.h" 19 #include <cp_defs.h> 20 21 extern int __clock_gettime_sys(clockid_t, timespec_t *); 22 23 int 24 __clock_gettime(clockid_t clock_id, timespec_t *tp) 25 { 26 comm_page_t *cp = (comm_page_t *)__uberdata.ub_comm_page; 27 28 if (cp != NULL && __cp_can_gettime(cp) != 0) { 29 switch (clock_id) { 30 case __CLOCK_REALTIME0: 31 case CLOCK_REALTIME: 32 return (__cp_clock_gettime_realtime(cp, tp)); 33 34 case CLOCK_MONOTONIC: 35 return (__cp_clock_gettime_monotonic(cp, tp)); 36 37 default: 38 /* Fallback */ 39 break; 40 } 41 } 42 return (__clock_gettime_sys(clock_id, tp)); 43 } 44