summaryrefslogtreecommitdiff
path: root/usr/src/compat
diff options
context:
space:
mode:
authorPatrick Mooney <pmooney@pfmooney.com>2022-03-02 12:44:01 -0600
committerPatrick Mooney <pmooney@oxide.computer>2022-03-30 15:50:42 +0000
commit5103e761e384621c5728a6d1f4b0bfdc1be233a4 (patch)
tree4902e230f96adbc93d7aab7b2408f748a774e7c8 /usr/src/compat
parentdb9aa506ce275f82ee72f31fc2e6e3c53d1212b7 (diff)
downloadillumos-joyent-5103e761e384621c5728a6d1f4b0bfdc1be233a4.tar.gz
14569 bhyve should consolidate on hrtime
14486 bhyve needs instruction emul tests Reviewed by: Andy Fiddaman <andy@omnios.org> Reviewed by: Luqman Aden <luqman@oxide.computer> Approved by: Dan McDonald <danmcd@joyent.com>
Diffstat (limited to 'usr/src/compat')
-rw-r--r--usr/src/compat/bhyve/sys/callout.h12
-rw-r--r--usr/src/compat/bhyve/sys/time.h136
-rw-r--r--usr/src/compat/bhyve/sys/types.h5
3 files changed, 4 insertions, 149 deletions
diff --git a/usr/src/compat/bhyve/sys/callout.h b/usr/src/compat/bhyve/sys/callout.h
index 11823e6321..4156c2d4c6 100644
--- a/usr/src/compat/bhyve/sys/callout.h
+++ b/usr/src/compat/bhyve/sys/callout.h
@@ -45,8 +45,6 @@ struct callout {
#define callout_pending(c) ((c)->c_target > (c)->c_fired)
void vmm_glue_callout_init(struct callout *c, int mpsafe);
-int vmm_glue_callout_reset_sbt(struct callout *c, sbintime_t sbt,
- sbintime_t pr, void (*func)(void *), void *arg, int flags);
int vmm_glue_callout_stop(struct callout *c);
int vmm_glue_callout_drain(struct callout *c);
@@ -71,12 +69,10 @@ callout_drain(struct callout *c)
return (vmm_glue_callout_drain(c));
}
-static __inline int
-callout_reset_sbt(struct callout *c, sbintime_t sbt, sbintime_t pr,
- void (*func)(void *), void *arg, int flags)
-{
- return (vmm_glue_callout_reset_sbt(c, sbt, pr, func, arg, flags));
-}
+void callout_reset_hrtime(struct callout *c, hrtime_t target,
+ void (*func)(void *), void *arg, int flags);
+uint64_t hrt_freq_count(hrtime_t interval, uint32_t freq);
+hrtime_t hrt_freq_interval(uint32_t freq, uint64_t count);
#endif /* _COMPAT_FREEBSD_SYS_CALLOUT_H_ */
diff --git a/usr/src/compat/bhyve/sys/time.h b/usr/src/compat/bhyve/sys/time.h
deleted file mode 100644
index 48bdcc304e..0000000000
--- a/usr/src/compat/bhyve/sys/time.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * This file and its contents are supplied under the terms of the
- * Common Development and Distribution License ("CDDL"), version 1.0.
- * You may only use this file in accordance with the terms of version
- * 1.0 of the CDDL.
- *
- * A full copy of the text of the CDDL should have accompanied this
- * source. A copy of the CDDL is also available via the Internet at
- * http://www.illumos.org/license/CDDL.
- */
-
-/*
- * Copyright 2013 Pluribus Networks Inc.
- * Copyright 2020 Oxide Computer Company
- */
-
-#ifndef _COMPAT_FREEBSD_SYS_TIME_H_
-#define _COMPAT_FREEBSD_SYS_TIME_H_
-
-#include_next <sys/time.h>
-
-#define tc_precexp 0
-
-struct bintime {
- ulong_t sec; /* seconds */
- uint64_t frac; /* 64 bit fraction of a second */
-};
-
-#define BT2FREQ(bt) \
- (((uint64_t)0x8000000000000000 + ((bt)->frac >> 2)) / \
- ((bt)->frac >> 1))
-
-#define FREQ2BT(freq, bt) \
-{ \
- (bt)->sec = 0; \
- (bt)->frac = ((uint64_t)0x8000000000000000 / (freq)) << 1; \
-}
-
-static __inline void
-binuptime(struct bintime *bt)
-{
- hrtime_t now = gethrtime();
-
- bt->sec = now / 1000000000;
- /* 18446744073 = int(2^64 / 1000000000) = 1ns in 64-bit fractions */
- bt->frac = (now % 1000000000) * (uint64_t)18446744073LL;
-}
-
-#define bintime_cmp(a, b, cmp) \
- (((a)->sec == (b)->sec) ? \
- ((a)->frac cmp (b)->frac) : \
- ((a)->sec cmp (b)->sec))
-
-/*
- * The bintime_cmp() macro is problematic for a couple reasons:
- * 1. Bearing a lowercase name suggests it is a function rather than a macro.
- * 2. Placing the comparison operator as the last argument runs afoul of our
- * cstyle rules, unlike cases such as VERIFY3*().
- *
- * To remedy these issues in illumos bhyve, we provide a slightly modified
- * version which addresses both problems.
- */
-#define BINTIME_CMP(a, cmp, b) bintime_cmp((a), (b), cmp)
-
-#define SBT_1S ((sbintime_t)1 << 32)
-#define SBT_1M (SBT_1S * 60)
-#define SBT_1MS (SBT_1S / 1000)
-#define SBT_1US (SBT_1S / 1000000)
-#define SBT_1NS (SBT_1S / 1000000000)
-#define SBT_MAX 0x7fffffffffffffffLL
-
-
-static __inline void
-bintime_add(struct bintime *bt, const struct bintime *bt2)
-{
- uint64_t u;
-
- u = bt->frac;
- bt->frac += bt2->frac;
- if (u > bt->frac)
- bt->sec++;
- bt->sec += bt2->sec;
-}
-
-static __inline void
-bintime_sub(struct bintime *bt, const struct bintime *bt2)
-{
- uint64_t u;
-
- u = bt->frac;
- bt->frac -= bt2->frac;
- if (u < bt->frac)
- bt->sec--;
- bt->sec -= bt2->sec;
-}
-
-static __inline void
-bintime_mul(struct bintime *bt, u_int x)
-{
- uint64_t p1, p2;
-
- p1 = (bt->frac & 0xffffffffull) * x;
- p2 = (bt->frac >> 32) * x + (p1 >> 32);
- bt->sec *= x;
- bt->sec += (p2 >> 32);
- bt->frac = (p2 << 32) | (p1 & 0xffffffffull);
-}
-
-static __inline sbintime_t
-bttosbt(const struct bintime bt)
-{
- return (((sbintime_t)bt.sec << 32) + (bt.frac >> 32));
-}
-
-static __inline struct bintime
-sbttobt(sbintime_t _sbt)
-{
- struct bintime _bt;
-
- _bt.sec = _sbt >> 32;
- _bt.frac = _sbt << 32;
- return (_bt);
-}
-
-static __inline sbintime_t
-sbinuptime(void)
-{
- hrtime_t hrt = gethrtime();
- uint64_t sec = hrt / NANOSEC;
- uint64_t nsec = hrt % NANOSEC;
-
- return (((sbintime_t)sec << 32) +
- (nsec * (((uint64_t)1 << 63) / 500000000) >> 32));
-}
-
-#endif /* _COMPAT_FREEBSD_SYS_TIME_H_ */
diff --git a/usr/src/compat/bhyve/sys/types.h b/usr/src/compat/bhyve/sys/types.h
index 63731da42e..baa4cad157 100644
--- a/usr/src/compat/bhyve/sys/types.h
+++ b/usr/src/compat/bhyve/sys/types.h
@@ -29,11 +29,6 @@ typedef __uint64_t u_int64_t;
typedef __register_t register_t;
#endif
-#ifndef __SBINTIME_T_DEFINED
-#define __SBINTIME_T_DEFINED
-typedef __int64_t sbintime_t;
-#endif
-
#ifndef __VM_MEMATTR_T_DEFINED
#define __VM_MEMATTR_T_DEFINED
typedef char vm_memattr_t;