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