]> git.sesse.net Git - bcachefs-tools-debian/blob - libbcachefs/clock_types.h
rust: bump rpassword to v7.x
[bcachefs-tools-debian] / libbcachefs / clock_types.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_CLOCK_TYPES_H
3 #define _BCACHEFS_CLOCK_TYPES_H
4
5 #include "util.h"
6
7 #define NR_IO_TIMERS            (BCH_SB_MEMBERS_MAX * 3)
8
9 /*
10  * Clocks/timers in units of sectors of IO:
11  *
12  * Note - they use percpu batching, so they're only approximate.
13  */
14
15 struct io_timer;
16 typedef void (*io_timer_fn)(struct io_timer *);
17
18 struct io_timer {
19         io_timer_fn             fn;
20         unsigned long           expire;
21 };
22
23 /* Amount to buffer up on a percpu counter */
24 #define IO_CLOCK_PCPU_SECTORS   128
25
26 typedef HEAP(struct io_timer *) io_timer_heap;
27
28 struct io_clock {
29         atomic64_t              now;
30         u16 __percpu            *pcpu_buf;
31         unsigned                max_slop;
32
33         spinlock_t              timer_lock;
34         io_timer_heap           timers;
35 };
36
37 #endif /* _BCACHEFS_CLOCK_TYPES_H */