brintos

brintos / linux-shallow public Read only

0
0
Text · 755 B · 37554e4 Raw
39 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef _BCACHEFS_CLOCK_TYPES_H3#define _BCACHEFS_CLOCK_TYPES_H4 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 15struct io_timer;16typedef void (*io_timer_fn)(struct io_timer *);17 18struct io_timer {19	io_timer_fn		fn;20	void			*fn2;21	u64			expire;22};23 24/* Amount to buffer up on a percpu counter */25#define IO_CLOCK_PCPU_SECTORS	12826 27typedef DEFINE_MIN_HEAP(struct io_timer *, io_timer_heap)	io_timer_heap;28 29struct io_clock {30	atomic64_t		now;31	u16 __percpu		*pcpu_buf;32	unsigned		max_slop;33 34	spinlock_t		timer_lock;35	io_timer_heap		timers;36};37 38#endif /* _BCACHEFS_CLOCK_TYPES_H */39