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