| #ifndef FIO_LFSR_H |
| #define FIO_LFSR_H |
| |
| #include <inttypes.h> |
| |
| #define FIO_MAX_TAPS 6 |
| |
| struct lfsr_taps { |
| unsigned int length; |
| unsigned int taps[FIO_MAX_TAPS]; |
| }; |
| |
| |
| struct fio_lfsr { |
| uint64_t xormask; |
| uint64_t last_val; |
| uint64_t cached_bit; |
| uint64_t max_val; |
| uint64_t num_vals; |
| uint64_t cycle_length; |
| uint64_t cached_cycle_length; |
| unsigned int spin; |
| }; |
| |
| int lfsr_next(struct fio_lfsr *fl, uint64_t *off); |
| int lfsr_init(struct fio_lfsr *fl, uint64_t size, |
| unsigned long seed, unsigned int spin); |
| int lfsr_reset(struct fio_lfsr *fl, unsigned long seed); |
| |
| #endif |