xref: /aosp_15_r20/external/jemalloc_new/include/jemalloc/internal/nstime.h (revision 1208bc7e437ced7eb82efac44ba17e3beba411da)
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