X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.h;h=9a8184b94716fc9bbaf3c9661e6454158111f5d0;hp=915c0b5365417b33097accc8bcee8b14b37c5941;hb=e29d1b70a21e29801fb35dfbc1b236b7c8514055;hpb=53cdc6864f7471b28cc9b40a5314ab43e5b1cb5e diff --git a/fio.h b/fio.h index 915c0b53..9a8184b9 100644 --- a/fio.h +++ b/fio.h @@ -131,6 +131,7 @@ enum fio_ioengine_flags { FIO_SYNCIO = 1 << 0, FIO_CPUIO = 1 << 1, FIO_MMAPIO = 1 << 2, + FIO_RAWIO = 1 << 3, }; struct fio_file { @@ -150,6 +151,8 @@ struct fio_file { unsigned long *file_map; unsigned int num_maps; + + int fileno; }; /* @@ -186,6 +189,7 @@ struct thread_data { unsigned char sync_io; unsigned char verify; unsigned char use_thread; + unsigned char unlink; unsigned char do_disk_util; unsigned char override_sync; unsigned char rand_repeatable; @@ -423,10 +427,12 @@ extern int setup_rate(struct thread_data *); /* * Time functions */ +extern void time_init(void); extern unsigned long utime_since(struct timeval *, struct timeval *); extern unsigned long mtime_since(struct timeval *, struct timeval *); extern unsigned long mtime_since_now(struct timeval *); extern unsigned long time_since_now(struct timeval *); +extern unsigned long mtime_since_genesis(void); extern void __usec_sleep(unsigned int); extern void usec_sleep(struct thread_data *, unsigned long); extern void rate_throttle(struct thread_data *, unsigned long, unsigned int); @@ -443,6 +449,36 @@ extern int init_random_state(struct thread_data *); extern void close_files(struct thread_data *); extern int setup_files(struct thread_data *); +/* + * ETA/status stuff + */ +extern void print_thread_status(void); +extern void print_status_init(int); + +/* + * Thread life cycle. Once a thread has a runstate beyond TD_INITIALIZED, it + * will never back again. It may cycle between running/verififying/fsyncing. + * Once the thread reaches TD_EXITED, it is just waiting for the core to + * reap it. + */ +enum { + TD_NOT_CREATED = 0, + TD_CREATED, + TD_INITIALIZED, + TD_RUNNING, + TD_VERIFYING, + TD_FSYNCING, + TD_EXITED, + TD_REAPED, +}; + +/* + * Verify helpers + */ +extern void populate_verify_io_u(struct thread_data *, struct io_u *); +extern int get_next_verify(struct thread_data *td, struct io_u *); +extern int verify_io_u(struct io_u *); + /* * This is a pretty crappy semaphore implementation, but with the use that fio * has (just signalling start/go conditions), it doesn't have to be better. @@ -504,6 +540,6 @@ extern void close_ioengine(struct thread_data *); #define fio_unused __attribute((__unused__)) #define for_each_file(td, f, i) \ - for ((i) = 0, (f) = &(td)->files[(i)]; (i) < (td)->nr_files; (i)++, (f) = &(td)->files[(i)]) + for ((i) = 0, (f) = &(td)->files[0]; (i) < (td)->nr_files; (i)++, (f) = &(td)->files[(i)]) #endif