aboutsummaryrefslogtreecommitdiffstats
path: root/include/spl-time.h
blob: 576fd191c10aef39b20752f20953768f7d2038ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#ifndef _SPL_TIME_H
#define _SPL_TIME_H

/*
 * Structure returned by gettimeofday(2) system call,
 * and used in other calls.
 */

#ifdef  __cplusplus
extern "C" {
#endif

#include <linux/module.h>
#include <linux/time.h>
#include "spl-types.h"

extern unsigned long long monotonic_clock(void);
typedef struct timespec timestruc_t;    /* definition per SVr4 */
typedef longlong_t      hrtime_t;

#define TIME32_MAX      INT32_MAX
#define TIME32_MIN      INT32_MIN

#define SEC             1
#define MILLISEC        1000
#define MICROSEC        1000000
#define NANOSEC         1000000000

#define hz					\
({						\
        BUG_ON(HZ < 100 || HZ > MICROSEC);	\
        HZ;					\
})

#define gethrestime(ts) getnstimeofday((ts))

static __inline__ hrtime_t
gethrtime(void) {
        /* BUG_ON(cur_timer == timer_none); */

        /* Solaris expects a long long here but monotonic_clock() returns an
         * unsigned long long.  Note that monotonic_clock() returns the number
	 * of nanoseconds passed since kernel initialization.  Even for a signed
         * long long this will not "go negative" for ~292 years.
         */
        return monotonic_clock();
}

static __inline__ time_t
gethrestime_sec(void)
{
        timestruc_t now;

        gethrestime(&now);
        return (now.tv_sec);
}


#ifdef  __cplusplus
}
#endif

#endif  /* _SPL_TIME_H */