xref: /illumos-gate/usr/src/lib/libc/i386/sys/__gethrtime.c (revision 1170833fec62773f21c42c8b6be7af4860f91451)
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 2025 Oxide Computer Company
14  */
15 
16 
17 #include "thr_uberdata.h"
18 #include <cp_defs.h>
19 
20 extern hrtime_t __gethrtime_sys(void);
21 
22 /*
23  * Calculate the hrtime using the comm page if possible, falling back to the
24  * legacy "fast-trap" syscall path if not.
25  */
26 hrtime_t
__gethrtime(void)27 __gethrtime(void)
28 {
29 	comm_page_t *cp = (comm_page_t *)__uberdata.ub_comm_page;
30 
31 	if (cp != NULL && __cp_can_gettime(cp) != 0) {
32 		return (__cp_gethrtime(cp));
33 	}
34 	return (__gethrtime_sys());
35 }
36