@@ -191,6 +191,7 @@ const char *output_format = "Output format: normal|binary";
191191const char * timeout = "timeout value, in milliseconds" ;
192192const char * verbose = "Increase output verbosity" ;
193193const char * dry_run = "show command instead of sending" ;
194+ const char * delay = "iterative delay as SECS [.TENTHS]" ;
194195
195196static const char * app_tag = "app tag for end-to-end PI" ;
196197static const char * app_tag_mask = "app tag mask for end-to-end PI" ;
@@ -262,6 +263,7 @@ struct nvme_config nvme_cfg = {
262263 .output_format = "normal" ,
263264 .output_format_ver = 1 ,
264265 .timeout = NVME_DEFAULT_IOCTL_TIMEOUT ,
266+ .delay = 0 ,
265267};
266268
267269static void * mmap_registers (struct nvme_transport_handle * hdl , bool writable );
@@ -11011,6 +11013,29 @@ void register_extension(struct plugin *plugin)
1101111013 nvme .extensions -> tail = plugin ;
1101211014}
1101311015
11016+ static bool handle_delay (int err )
11017+ {
11018+ struct timespec ts ;
11019+ double delay_f ;
11020+ double delay_i ;
11021+
11022+ if (err || !nvme_cfg .delay )
11023+ return false;
11024+
11025+ delay_f = modf (nvme_cfg .delay , & delay_i );
11026+ ts .tv_sec = delay_i ;
11027+ ts .tv_nsec = delay_f * 1000000000 ;
11028+ err = pselect (0 , NULL , NULL , NULL , & ts , NULL );
11029+ if (err < 0 )
11030+ return false;
11031+
11032+ err = system ("clear" );
11033+ if (err < 0 )
11034+ return false;
11035+
11036+ return true;
11037+ }
11038+
1101411039int main (int argc , char * * argv )
1101511040{
1101611041 int err ;
@@ -11026,9 +11051,11 @@ int main(int argc, char **argv)
1102611051 if (err )
1102711052 return err ;
1102811053
11029- err = handle_plugin (argc - 1 , & argv [1 ], nvme .extensions );
11030- if (err == - ENOTTY )
11031- general_help (& builtin , NULL );
11054+ do {
11055+ err = handle_plugin (argc - 1 , & argv [1 ], nvme .extensions );
11056+ if (err == - ENOTTY )
11057+ general_help (& builtin , NULL );
11058+ } while (handle_delay (err ));
1103211059
1103311060 return err ? 1 : 0 ;
1103411061}
0 commit comments