xref: /freebsd/sys/contrib/openzfs/include/os/linux/spl/sys/timer.h (revision 61145dc2b94f12f6a47344fb9aac702321880e43)
1  // SPDX-License-Identifier: GPL-2.0-or-later
2  /*
3   *  Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC.
4   *  Copyright (C) 2007 The Regents of the University of California.
5   *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
6   *  Written by Brian Behlendorf <behlendorf1@llnl.gov>.
7   *  UCRL-CODE-235197
8   *
9   *  This file is part of the SPL, Solaris Porting Layer.
10   *
11   *  The SPL is free software; you can redistribute it and/or modify it
12   *  under the terms of the GNU General Public License as published by the
13   *  Free Software Foundation; either version 2 of the License, or (at your
14   *  option) any later version.
15   *
16   *  The SPL is distributed in the hope that it will be useful, but WITHOUT
17   *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18   *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19   *  for more details.
20   *
21   *  You should have received a copy of the GNU General Public License along
22   *  with the SPL.  If not, see <http://www.gnu.org/licenses/>.
23   */
24  
25  #ifndef _SPL_TIMER_H
26  #define	_SPL_TIMER_H
27  
28  #include <linux/module.h>
29  #include <linux/delay.h>
30  #include <linux/sched.h>
31  #include <linux/time.h>
32  #include <linux/timer.h>
33  
34  #define	lbolt				((clock_t)jiffies)
35  #define	lbolt64				((int64_t)get_jiffies_64())
36  
37  #define	ddi_get_lbolt()			((clock_t)jiffies)
38  #define	ddi_get_lbolt64()		((int64_t)get_jiffies_64())
39  
40  #define	ddi_time_before(a, b)		(typecheck(clock_t, a) && \
41  					typecheck(clock_t, b) && \
42  					((a) - (b) < 0))
43  #define	ddi_time_after(a, b)		ddi_time_before(b, a)
44  #define	ddi_time_before_eq(a, b)	(!ddi_time_after(a, b))
45  #define	ddi_time_after_eq(a, b)		ddi_time_before_eq(b, a)
46  
47  #define	ddi_time_before64(a, b)		(typecheck(int64_t, a) && \
48  					typecheck(int64_t, b) && \
49  					((a) - (b) < 0))
50  #define	ddi_time_after64(a, b)		ddi_time_before64(b, a)
51  #define	ddi_time_before_eq64(a, b)	(!ddi_time_after64(a, b))
52  #define	ddi_time_after_eq64(a, b)	ddi_time_before_eq64(b, a)
53  
54  #define	delay(ticks)			schedule_timeout_uninterruptible(ticks)
55  
56  #define	SEC_TO_TICK(sec)		((sec) * HZ)
57  #define	MSEC_TO_TICK(ms)		msecs_to_jiffies(ms)
58  #define	USEC_TO_TICK(us)		usecs_to_jiffies(us)
59  #define	NSEC_TO_TICK(ns)		usecs_to_jiffies(ns / NSEC_PER_USEC)
60  
61  #ifndef from_timer
62  #define	from_timer(var, timer, timer_field) \
63  	container_of(timer, typeof(*var), timer_field)
64  #endif
65  
66  #endif  /* _SPL_TIMER_H */
67