xref: /netbsd-src/external/bsd/jemalloc.old/include/jemalloc/internal/nstime.h (revision 8e33eff89e26cf71871ead62f0d5063e1313c33a)
1*8e33eff8Schristos #ifndef JEMALLOC_INTERNAL_NSTIME_H
2*8e33eff8Schristos #define JEMALLOC_INTERNAL_NSTIME_H
3*8e33eff8Schristos 
4*8e33eff8Schristos /* Maximum supported number of seconds (~584 years). */
5*8e33eff8Schristos #define NSTIME_SEC_MAX KQU(18446744072)
6*8e33eff8Schristos #define NSTIME_INITIALIZER { .ns = 0, }
7*8e33eff8Schristos 
8*8e33eff8Schristos typedef struct {
9*8e33eff8Schristos 	uint64_t ns;
10*8e33eff8Schristos } nstime_t;
11*8e33eff8Schristos 
12*8e33eff8Schristos void nstime_init(nstime_t *time, uint64_t ns);
13*8e33eff8Schristos void nstime_init2(nstime_t *time, uint64_t sec, uint64_t nsec);
14*8e33eff8Schristos uint64_t nstime_ns(const nstime_t *time);
15*8e33eff8Schristos uint64_t nstime_sec(const nstime_t *time);
16*8e33eff8Schristos uint64_t nstime_msec(const nstime_t *time);
17*8e33eff8Schristos uint64_t nstime_nsec(const nstime_t *time);
18*8e33eff8Schristos void nstime_copy(nstime_t *time, const nstime_t *source);
19*8e33eff8Schristos int nstime_compare(const nstime_t *a, const nstime_t *b);
20*8e33eff8Schristos void nstime_add(nstime_t *time, const nstime_t *addend);
21*8e33eff8Schristos void nstime_iadd(nstime_t *time, uint64_t addend);
22*8e33eff8Schristos void nstime_subtract(nstime_t *time, const nstime_t *subtrahend);
23*8e33eff8Schristos void nstime_isubtract(nstime_t *time, uint64_t subtrahend);
24*8e33eff8Schristos void nstime_imultiply(nstime_t *time, uint64_t multiplier);
25*8e33eff8Schristos void nstime_idivide(nstime_t *time, uint64_t divisor);
26*8e33eff8Schristos uint64_t nstime_divide(const nstime_t *time, const nstime_t *divisor);
27*8e33eff8Schristos 
28*8e33eff8Schristos typedef bool (nstime_monotonic_t)(void);
29*8e33eff8Schristos extern nstime_monotonic_t *JET_MUTABLE nstime_monotonic;
30*8e33eff8Schristos 
31*8e33eff8Schristos typedef bool (nstime_update_t)(nstime_t *);
32*8e33eff8Schristos extern nstime_update_t *JET_MUTABLE nstime_update;
33*8e33eff8Schristos 
34*8e33eff8Schristos #endif /* JEMALLOC_INTERNAL_NSTIME_H */
35