30 lines
571 B
C
30 lines
571 B
C
#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
|