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