#ifndef FIO_STEADYSTATE_H
#define FIO_STEADYSTATE_H

#include "thread_options.h"

extern void steadystate_free(struct thread_data *);
extern void steadystate_check(void);
extern void steadystate_setup(void);
extern int td_steadystate_init(struct thread_data *);
extern uint64_t steadystate_bw_mean(struct thread_stat *);
extern uint64_t steadystate_iops_mean(struct thread_stat *);

extern bool steadystate_enabled;

struct steadystate_data {
	double limit;
	unsigned long long dur;
	unsigned long long ramp_time;

	uint32_t state;

	unsigned int head;
	unsigned int tail;
	uint64_t *iops_data;
	uint64_t *bw_data;

	double slope;
	double deviation;
	double criterion;

	uint64_t sum_y;
	uint64_t sum_x;
	uint64_t sum_x_sq;
	uint64_t sum_xy;
	uint64_t oldest_y;

	struct timespec prev_time;
	uint64_t prev_iops;
	uint64_t prev_bytes;
};

enum {
	__FIO_SS_IOPS = 0,
	__FIO_SS_BW,
	__FIO_SS_SLOPE,
	__FIO_SS_ATTAINED,
	__FIO_SS_RAMP_OVER,
	__FIO_SS_DATA,
	__FIO_SS_PCT,
	__FIO_SS_BUFFER_FULL,
};

enum {
	FIO_SS_IOPS		= 1 << __FIO_SS_IOPS,
	FIO_SS_BW		= 1 << __FIO_SS_BW,
	FIO_SS_SLOPE		= 1 << __FIO_SS_SLOPE,
	FIO_SS_ATTAINED		= 1 << __FIO_SS_ATTAINED,
	FIO_SS_RAMP_OVER	= 1 << __FIO_SS_RAMP_OVER,
	FIO_SS_DATA		= 1 << __FIO_SS_DATA,
	FIO_SS_PCT		= 1 << __FIO_SS_PCT,
	FIO_SS_BUFFER_FULL	= 1 << __FIO_SS_BUFFER_FULL,

	FIO_SS_IOPS_SLOPE	= FIO_SS_IOPS | FIO_SS_SLOPE,
	FIO_SS_BW_SLOPE		= FIO_SS_BW | FIO_SS_SLOPE,
};

#define STEADYSTATE_MSEC	1000

#endif
