bcachefs-tools/libbcachefs/clock_types.h

38 lines
727 B
C
Raw Normal View History

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHEFS_CLOCK_TYPES_H
#define _BCACHEFS_CLOCK_TYPES_H
2017-01-08 12:13:18 +03:00
#include "util.h"
#define NR_IO_TIMERS (BCH_SB_MEMBERS_MAX * 3)
2017-01-08 12:13:18 +03:00
/*
* Clocks/timers in units of sectors of IO:
*
* Note - they use percpu batching, so they're only approximate.
*/
struct io_timer;
typedef void (*io_timer_fn)(struct io_timer *);
struct io_timer {
io_timer_fn fn;
unsigned long expire;
};
/* Amount to buffer up on a percpu counter */
#define IO_CLOCK_PCPU_SECTORS 128
2017-04-24 08:56:57 +03:00
typedef HEAP(struct io_timer *) io_timer_heap;
2017-01-08 12:13:18 +03:00
struct io_clock {
atomic_long_t now;
u16 __percpu *pcpu_buf;
unsigned max_slop;
2017-01-08 12:13:18 +03:00
spinlock_t timer_lock;
2017-04-24 08:56:57 +03:00
io_timer_heap timers;
2017-01-08 12:13:18 +03:00
};
#endif /* _BCACHEFS_CLOCK_TYPES_H */