diff options
author | Douglas Gilbert <dgilbert@interlog.com> | 2020-09-03 15:32:35 +0000 |
---|---|---|
committer | Douglas Gilbert <dgilbert@interlog.com> | 2020-09-03 15:32:35 +0000 |
commit | a37cbfd6b346caf0af438f405a8e72fe69454005 (patch) | |
tree | 287e2c661580ae696095783225bedb1bf6fcdab9 /testing | |
parent | e294cca49d78b88ed74f628353970ff907a77e05 (diff) | |
download | sg3_utils-a37cbfd6b346caf0af438f405a8e72fe69454005.tar.gz |
C++ fix in library, testing cleanup
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@862 6180dd3e-e324-4e3e-922d-17de1ae2f315
Diffstat (limited to 'testing')
-rw-r--r-- | testing/Makefile | 4 | ||||
-rw-r--r-- | testing/sg_mrq_dd.cpp | 112 | ||||
-rw-r--r-- | testing/sg_scat_gath.cpp | 32 | ||||
-rw-r--r-- | testing/sg_scat_gath.h | 17 | ||||
-rw-r--r-- | testing/sg_tst_ioctl.c | 12 | ||||
-rw-r--r-- | testing/sgh_dd.cpp | 6 | ||||
-rw-r--r-- | testing/tst_sg_lib.c | 16 |
7 files changed, 58 insertions, 141 deletions
diff --git a/testing/Makefile b/testing/Makefile index 0e1a8402..0a34ddec 100644 --- a/testing/Makefile +++ b/testing/Makefile @@ -33,8 +33,8 @@ CXXFLAGS = -std=c++17 -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRAN # CXXFLAGS = -std=c++2a -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRANT $(LARGE_FILE_FLAGS) # CXXFLAGS = -std=c++11 -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRANT $(LARGE_FILE_FLAGS) # CPPFLAGS = -iquote ../include -iquote .. -D_REENTRANT $(LARGE_FILE_FLAGS) -DHAVE_CONFIG_H -DHAVE_NVME -DDEBUG -# CFLAGS = -g -O2 -W -Wall -CFLAGS = -ggdb -O2 -W -Wall -DDEBUG +CFLAGS = -g -O2 -W -Wall +# CFLAGS = -ggdb -O2 -W -Wall -DDEBUG # CFLAGS = -g -O2 -Wall -DSG_KERNEL_INCLUDES # CFLAGS = -g -O2 -Wall -pedantic # CFLAGS = -Wall -W -pedantic -std=c11 --analyze diff --git a/testing/sg_mrq_dd.cpp b/testing/sg_mrq_dd.cpp index 3a4c3306..5049b0b2 100644 --- a/testing/sg_mrq_dd.cpp +++ b/testing/sg_mrq_dd.cpp @@ -30,7 +30,7 @@ * */ -static const char * version_str = "1.08 20200820"; +static const char * version_str = "1.10 20200830"; #define _XOPEN_SOURCE 600 #ifndef _GNU_SOURCE @@ -310,9 +310,7 @@ struct sg_io_extra { #define MONO_MRQ_ID_INIT 0x10000 -// typedef vector< pair<int, struct sg_io_v4> > mrq_arr_t; typedef array<uint8_t, 32> big_cdb; /* allow up to a 32 byte cdb */ -typedef pair< vector<struct sg_io_v4>, vector<big_cdb> > mrq_arr_t; /* Use this class to wrap C++11 <random> features to produce uniform random @@ -330,14 +328,9 @@ private: default_random_engine dre; }; -static atomic<long int> pos_index(0); - static atomic<int> num_ebusy(0); static atomic<int> num_start_eagain(0); static atomic<int> num_fin_eagain(0); -#if 0 -static atomic<long> num_waiting_calls(0); -#endif static atomic<bool> vb_first_time(true); static sigset_t signal_set; @@ -377,8 +370,6 @@ static int num_threads = DEF_NUM_THREADS; static int exit_status = 0; static bool after1 = false; -static mutex rand_lba_mutex; - static const char * my_name = "sg_mrq_dd: "; // static const char * mrq_blk_s = "mrq: ordinary blocking"; @@ -390,15 +381,8 @@ static const char * mrq_vb_s = "mrq: variable blocking"; #ifdef __GNUC__ static int pr2serr_lk(const char * fmt, ...) __attribute__ ((format (printf, 1, 2))); -#if 0 -static void pr_errno_lk(int e_no, const char * fmt, ...) - __attribute__ ((format (printf, 2, 3))); -#endif #else static int pr2serr_lk(const char * fmt, ...); -#if 0 -static void pr_errno_lk(int e_no, const char * fmt, ...); -#endif #endif @@ -415,21 +399,6 @@ pr2serr_lk(const char * fmt, ...) return n; } -#if 0 // not used yet -static void -pr_errno_lk(int e_no, const char * fmt, ...) -{ - char b[180]; - va_list args; - lock_guard<mutex> lk(strerr_mut); - - va_start(args, fmt); - vsnprintf(b, sizeof(b), fmt, args); - fprintf(stderr, "%s: %s\n", b, strerror(e_no)); - va_end(args); -} -#endif - static void lk_print_command_len(const char *prefix, uint8_t * cmdp, int len, bool lock) { @@ -788,14 +757,6 @@ install_handler(int sig_num, void (*sig_handler) (int sig)) } } -#if 0 /* SG_LIB_ANDROID */ -static void -thread_exit_handler(int sig) -{ - pthread_exit(0); -} -#endif - /* Make safe_strerror() thread safe */ static char * tsafe_strerror(int code, char * ebp) @@ -810,16 +771,6 @@ tsafe_strerror(int code, char * ebp) } -/* Following macro from D.R. Butenhof's POSIX threads book: - * ISBN 0-201-63392-2 . Changed __FILE__ to __func__ */ -#define err_exit(code,text) do { \ - char strerr_buff[STRERR_BUFF_LEN]; \ - pr2serr("%s at \"%s\":%d: %s\n", \ - text, __func__, __LINE__, tsafe_strerror(code, strerr_buff)); \ - exit(1); \ - } while (0) - - static int dd_filetype(const char * filename, off_t & st_size) { @@ -867,7 +818,7 @@ usage(int pg_num) "[elemsz_kb=EKB]\n" " [fua=0|1|2|3] [mrq=MRQ] [no_waitq=0|1] " "[ofreg=OFREG]\n" - " [sync=0|1] [thr=THR] [time=0|1] " + " [sync=0|1] [thr=THR] [time=0|1|2] " "[verbose=VERB]\n" " [--dry-run] [--verbose] [--verify] " "[--version]\n\n" @@ -1181,12 +1132,6 @@ sg_take_snap(int sg_fd, int id, bool vb_b) pr2serr_lk("tid=%d: ioctl(SNAP_DEV) ok\n", id); } -static inline uint8_t * -get_buffp(Rq_elem * rep) -{ - return rep->buffp; -} - // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< /* Each thread's "main" function */ static void @@ -1197,17 +1142,14 @@ read_write_thread(struct global_collection * clp, int id, bool singleton) int n, sz, fd, vb, err, seg_blks; int res = 0; int num_sg = 0; - // volatile bool stop_after_write = false; bool own_infd = false; bool in_is_sg, in_mmap, out_is_sg, out_mmap; bool own_outfd = false; bool only_one_sg = false; - // bool share_and_ofreg; class scat_gath_iter i_sg_it(clp->i_sgl); class scat_gath_iter o_sg_it(clp->o_sgl); vector<cdb_arr_t> a_cdb; vector<struct sg_io_v4> a_v4; - // mrq_arr_t deferred_arr; /* MRQ deferred array (vector) */ vb = clp->verbose; sz = clp->mrq_num * clp->bpt * clp->bs; @@ -1231,11 +1173,13 @@ read_write_thread(struct global_collection * clp, int id, bool singleton) if (vb > 2) pr2serr_lk("%d <-- Starting worker thread\n", id); - if (! rep->both_sg) { + if (! (rep->both_sg || in_mmap)) { rep->buffp = sg_memalign(sz, 0 /* page align */, &rep->alloc_bp, false); - if (NULL == rep->buffp) - err_exit(ENOMEM, "out of memory creating user buffers\n"); + if (NULL == rep->buffp) { + pr2serr_lk("Failed to allocate %d bytes, exiting\n", sz); + return; + } } rep->infd = clp->infd; rep->outfd = clp->outfd; @@ -1385,9 +1329,6 @@ read_write_thread(struct global_collection * clp, int id, bool singleton) fini: -#if 0 - if ((rep->mmap_active == 0) && rep->alloc_bp) - free(rep->alloc_bp); if ((1 == rep->mmap_active) && (rep->mmap_len > 0)) { if (munmap(rep->buffp, rep->mmap_len) < 0) { err = errno; @@ -1401,13 +1342,9 @@ fini: rep->mmap_len); rep->mmap_active = 0; } -#endif if (own_infd && (rep->infd >= 0)) { if (vb && in_is_sg) { -#if 0 - ++num_waiting_calls; -#endif if (ioctl(rep->infd, SG_GET_NUM_WAITING, &n) >= 0) { if (n > 0) pr2serr_lk("%s: tid=%d: num_waiting=%d prior close(in)\n", @@ -1422,9 +1359,6 @@ fini: } if (own_outfd && (rep->outfd >= 0)) { if (vb && out_is_sg) { -#if 0 - ++num_waiting_calls; -#endif if (ioctl(rep->outfd, SG_GET_NUM_WAITING, &n) >= 0) { if (n > 0) pr2serr_lk("%s: tid=%d: num_waiting=%d prior " @@ -1442,6 +1376,8 @@ fini: clp->out_rem_count -= rep->out_local_count; clp->in_partial += rep->in_local_partial; clp->out_partial += rep->out_local_partial; + if (rep->alloc_bp) + free(rep->alloc_bp); } /* N.B. Returns 'blocks' is successful, lesser positive number if there was @@ -2383,7 +2319,7 @@ do_both_sg_segment_mrq0(Rq_elem * rep, scat_gath_iter & i_sg_it, if (num <= 0) { res = 0; pr2serr_lk("[%d] %s: min(i_lin_blks=%d o_lin_blks=%d) < 1\n", id, - __func__, i_lin_blks, o_lin_blks); + __func__, i_lin_blks, o_lin_blks); break; } @@ -2560,7 +2496,7 @@ do_both_sg_segment(Rq_elem * rep, scat_gath_iter & i_sg_it, if (num <= 0) { res = 0; pr2serr_lk("[%d] %s: min(i_lin_blks=%d o_lin_blks=%d) < 1\n", id, - __func__, i_lin_blks, o_lin_blks); + __func__, i_lin_blks, o_lin_blks); break; } @@ -2891,7 +2827,7 @@ skip_seek(struct global_collection *clp, const char * key, const char * buf, bool is_skip, bool ignore_verbose) { bool def_hex = false; - int len, err; + int len; int vb = clp->verbose; /* needs to appear before skip/seek= on cl */ int64_t ll; const char * cp; @@ -2912,7 +2848,7 @@ skip_seek(struct global_collection *clp, const char * key, const char * buf, if (! either_list.load_from_file(cp, def_hex, clp->flexible, true)) { pr2serr("bad argument to '%s=' [err=%d]\n", key, either_list.m_errno); - return err ? err : SG_LIB_SYNTAX_ERROR; + return SG_LIB_SYNTAX_ERROR; } } else if (num_either_ch_in_str(buf, len, ',', ' ') > 0) { if (! either_list.load_from_cli(buf, vb > 0)) { @@ -2931,14 +2867,6 @@ skip_seek(struct global_collection *clp, const char * key, const char * buf, } either_list.sum_scan(key, vb > 3 /* bool show_sgl */, vb > 1); -#if 0 - if (vb > 3) { - lock_guard<mutex> lk(strerr_mut); - - pr2serr("%s: scatter gathet list:\n", is_skip ? ("skip" : "seek")); - either_list.dbg_print(false, is_skip ? ("skip" : "seek"), false, - bool show_sgl) -#endif return 0; } @@ -2988,6 +2916,8 @@ process_flags(const char * arg, struct flags_t * fp) fp->no_dur = true; else if (0 == strcmp(cp, "no_dur")) fp->no_dur = true; + else if (0 == strcmp(cp, "no_dur")) + fp->no_dur = true; else if (0 == strcmp(cp, "noxfer")) ; /* accept but ignore */ else if (0 == strcmp(cp, "null")) @@ -3392,12 +3322,6 @@ parse_cmdline_sanity(int argc, char * argv[], struct global_collection * clp, pr2serr("mmap flag on both IFILE and OFILE doesn't work\n"); return SG_LIB_SYNTAX_ERROR; } -#if 0 - if (clp->out_flags.mmap) { - pr2serr("oflag=mmap needs either noshare=1\n"); - return SG_LIB_SYNTAX_ERROR; - } -#endif /* defaulting transfer size to 128*2048 for CD/DVDs is too large * for the block layer in lk 2.6 and results in an EIO on the * SG_IO ioctl. So reduce it in that case. */ @@ -4006,12 +3930,6 @@ fini: pr2serr("Number of finish EAGAINs: %d\n", num_fin_eagain.load()); if (clp->verbose && (num_ebusy > 0)) pr2serr("Number of EBUSYs: %d\n", num_ebusy.load()); -#if 0 - if (clp->verbose > 1) { - pr2serr("Number of SG_GET_NUM_WAITING calls=%ld\n", - num_waiting_calls.load()); - } -#endif if (clp->verify && (SG_LIB_CAT_MISCOMPARE == res)) pr2serr("Verify/compare failed due to miscompare\n"); return (res >= 0) ? res : SG_LIB_CAT_OTHER; diff --git a/testing/sg_scat_gath.cpp b/testing/sg_scat_gath.cpp index fcf45dfe..832cbed1 100644 --- a/testing/sg_scat_gath.cpp +++ b/testing/sg_scat_gath.cpp @@ -70,7 +70,7 @@ scat_gath_list::load_from_cli(const char * cl_p, bool b_vb) char * cp; char * c2p; const char * lcp; - struct scat_gath_elem sge; + class scat_gath_elem sge; if (NULL == cl_p) { pr2serr("%s: bad arguments\n", __func__); @@ -191,7 +191,7 @@ scat_gath_list::file2sgl_helper(FILE * fp, const char * fnp, bool def_hex, int64_t ll; uint64_t ull, prev_lba; char * lcp; - struct scat_gath_elem sge; + class scat_gath_elem sge; char line[1024]; for (j = 0 ; ; ++j) { @@ -434,7 +434,7 @@ scat_gath_list::dbg_print(bool skip_meta, const char * id_str, bool to_stdout, (num == 1 ? "" : "s")); if (show_sgl) { for (k = 0; k < num; ++k) { - const struct scat_gath_elem & sge = sgl[k]; + const class scat_gath_elem & sge = sgl[k]; fprintf(fp, " lba: 0x%" PRIx64 ", number: 0x%" PRIx32, sge.lba, sge.num); @@ -467,7 +467,7 @@ scat_gath_list::sum_scan(const char * id_str, bool show_sgl, bool b_vb) sum = 0; for (k = 0, low = 0, high = 0; k < elems; ++k) { - const struct scat_gath_elem & sge = sgl[k]; + const class scat_gath_elem & sge = sgl[k]; degen = false; t_num = sge.num; @@ -514,7 +514,7 @@ scat_gath_list::sum_scan(const char * id_str, bool show_sgl, bool b_vb) prev_lba = t_lba; ++k; for ( ; k < elems; ++k) { - const struct scat_gath_elem & sge = sgl[k]; + const class scat_gath_elem & sge = sgl[k]; degen = false; t_lba = sge.lba; @@ -558,7 +558,7 @@ scat_gath_list::append_1or(int64_t extra_blks, int64_t start_lba) int o_num = sgl.size(); const int max_nbs = MAX_SGL_NUM_VAL; int64_t cnt = 0; - struct scat_gath_elem sge; + class scat_gath_elem sge; if ((extra_blks <= 0) || (start_lba < 0)) return o_num; /* nothing to do */ @@ -602,7 +602,7 @@ scat_gath_list::append_1or(int64_t extra_blks) if (o_num < 1) return append_1or(extra_blks, 0); - struct scat_gath_elem sge = sgl[o_num - 1]; + class scat_gath_elem sge = sgl[o_num - 1]; return append_1or(extra_blks, sge.lba + sge.num); } @@ -865,7 +865,7 @@ scat_gath_iter::current_lba() const int64_t res = SG_LBA_INVALID; /* for at end or invalid (-1) */ if (it_el_ind < elems) { - struct scat_gath_elem sge = sglist.sgl[it_el_ind]; + class scat_gath_elem sge = sglist.sgl[it_el_ind]; if ((uint32_t)it_blk_off < sge.num) return sge.lba + it_blk_off; @@ -889,7 +889,7 @@ scat_gath_iter::current_lba_rem_num(int & rem_num) const int64_t res = SG_LBA_INVALID; /* for at end or invalid (-1) */ if (it_el_ind < elems) { - struct scat_gath_elem sge = sglist.sgl[it_el_ind]; + class scat_gath_elem sge = sglist.sgl[it_el_ind]; if ((uint32_t)it_blk_off < sge.num) { rem_num = sge.num - it_blk_off; @@ -908,11 +908,11 @@ scat_gath_iter::current_lba_rem_num(int & rem_num) const return res; } -struct scat_gath_elem +class scat_gath_elem scat_gath_iter::current_elem() const { const int elems = sglist.sgl.size(); - struct scat_gath_elem sge; + class scat_gath_elem sge; sge.make_bad(); if (it_el_ind < elems) @@ -946,7 +946,7 @@ scat_gath_iter::linear_for_n_blks(int max_n) const int k, rem; const int elems = sglist.sgl.size(); uint64_t prev_lba; - struct scat_gath_elem sge; + class scat_gath_elem sge; if (at_end() || (max_n <= 0)) return 0; @@ -992,8 +992,8 @@ scat_gath_iter::dbg_print(const char * id_str, bool to_stdout, * INT_MIN. Assumes iterators close enough for result to lie in range * from (-INT_MAX) to INT_MAX (inclusive). */ int -diff_between_iters(const struct scat_gath_iter & left, - const struct scat_gath_iter & right) +diff_between_iters(const class scat_gath_iter & left, + const class scat_gath_iter & right) { int res, k, r_e_ind, l_e_ind; @@ -1028,8 +1028,8 @@ diff_between_iters(const struct scat_gath_iter & left, * true. If no inequality but remaining lists differ in length then returns * allow_partial. */ bool -sgls_eq_from_iters(const struct scat_gath_iter & left, - const struct scat_gath_iter & right, +sgls_eq_from_iters(const class scat_gath_iter & left, + const class scat_gath_iter & right, bool allow_partial) { return sgls_eq_off(left.sglist, left.it_el_ind, left.it_blk_off, diff --git a/testing/sg_scat_gath.h b/testing/sg_scat_gath.h index bda8aef7..e864bf8b 100644 --- a/testing/sg_scat_gath.h +++ b/testing/sg_scat_gath.h @@ -27,7 +27,8 @@ // Sizing matches largest SCSI READ and WRITE commands plus those of Unix // read(2)s and write(2)s. User can give larger than 31 bit 'num's but they // are split into several consecutive elements. -struct scat_gath_elem { +class scat_gath_elem { +public: uint64_t lba; // of start block uint32_t num; // number of blocks from and including start block @@ -89,8 +90,8 @@ public: int64_t lowest_lba; // initialized to 0 int64_t sum; // of all 'num' elements in 'sgl' - friend int diff_between_iters(const struct scat_gath_iter & left, - const struct scat_gath_iter & right); + friend int diff_between_iters(const class scat_gath_iter & left, + const class scat_gath_iter & right); private: friend class scat_gath_iter; @@ -111,7 +112,7 @@ public: int64_t current_lba() const; int64_t current_lba_rem_num(int & rem_num) const; - struct scat_gath_elem current_elem() const; + class scat_gath_elem current_elem() const; bool at_end() const; bool is_sgl_linear() const; // the whole list // Should return 1 or more unless max_n<=0 or at_end() @@ -124,11 +125,11 @@ public: void dbg_print(const char * id_str, bool to_stdout, int verbose) const; - friend int diff_between_iters(const struct scat_gath_iter & left, - const struct scat_gath_iter & right); + friend int diff_between_iters(const class scat_gath_iter & left, + const class scat_gath_iter & right); - friend bool sgls_eq_from_iters(const struct scat_gath_iter & left, - const struct scat_gath_iter & right, + friend bool sgls_eq_from_iters(const class scat_gath_iter & left, + const class scat_gath_iter & right, bool allow_partial); private: diff --git a/testing/sg_tst_ioctl.c b/testing/sg_tst_ioctl.c index 1fd91339..0dff9f1a 100644 --- a/testing/sg_tst_ioctl.c +++ b/testing/sg_tst_ioctl.c @@ -60,7 +60,7 @@ * later of the Linux sg driver. */ -static const char * version_str = "Version: 1.18 20200719"; +static const char * version_str = "Version: 1.19 20200825"; #define INQ_REPLY_LEN 128 #define INQ_CMD_LEN 6 @@ -110,7 +110,7 @@ static int dname_last = 0; static int dname_pos = 0; static int verbose = 0; -static const char * relative_cp = NULL; +static const char * relative_cp = ""; static char * file_name = NULL; @@ -665,7 +665,7 @@ do_mrqs(int sg_fd, int sg_fd2, int mrqs) mrq_h4p->flags = SGV4_FLAG_MULTIPLE_REQS; if (mrq_immed) mrq_h4p->flags |= SGV4_FLAG_IMMED; - arr_v4 = calloc(mrqs, sizeof(struct sg_io_v4)); + arr_v4 = (struct sg_io_v4 *)calloc(mrqs, sizeof(struct sg_io_v4)); if (NULL == arr_v4) { res = ENOMEM; goto fini; @@ -1034,7 +1034,7 @@ dname_range_loop: is_first = false; if (nw_given) - printf("Timing %dx%d calls to ioctl(SG_GET_NUM_WAITING)\n", + printf("Timing %d x %d calls to ioctl(SG_GET_NUM_WAITING)\n", rang, num_sgnw); else if (iterator_test >= 0) { k = num_sgnw + 1000; @@ -1144,10 +1144,10 @@ dname_range_loop: if (num_sgnw >= 100) { double m = (double)res_tm.tv_sec + ((double)res_tm.tv_nsec / 1000000000.0); + double num = num_sgnw; if (m > 0.000001) - printf("%sCalls per second: %.2f\n", relative_cp, - (double)sum_nw / m); + printf("%sCalls per second: %.2f\n", relative_cp, num / m); } res = 0; goto out; diff --git a/testing/sgh_dd.cpp b/testing/sgh_dd.cpp index de1ba9aa..8221eb25 100644 --- a/testing/sgh_dd.cpp +++ b/testing/sgh_dd.cpp @@ -36,7 +36,7 @@ * renamed [20181221] */ -static const char * version_str = "1.89 20200818"; +static const char * version_str = "1.91 20200829"; #define _XOPEN_SOURCE 600 #ifndef _GNU_SOURCE @@ -399,8 +399,6 @@ static int num_threads = DEF_NUM_THREADS; static int exit_status = 0; static bool after1 = false; -static mutex rand_lba_mutex; - static const char * my_name = "sgh_dd: "; static const char * mrq_blk_s = "mrq: ordinary blocking"; @@ -902,7 +900,7 @@ usage(int pg_num) " [mrq=[I|O,]NRQS[,C]] [noshare=0|1] " "[of2=OFILE2]\n" " [ofreg=OFREG] [ofsplit=OSP] [sync=0|1] [thr=THR] " - "[time=0|1]\n" + "[time=0|1|2]\n" " [unshare=1|0] [verbose=VERB] [--dry-run] " "[--prefetch]\n" " [--verbose] [--verify] [--version]\n\n" diff --git a/testing/tst_sg_lib.c b/testing/tst_sg_lib.c index a90bcac3..eb159334 100644 --- a/testing/tst_sg_lib.c +++ b/testing/tst_sg_lib.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2019 Douglas Gilbert. + * Copyright (c) 2013-2020 Douglas Gilbert. * All rights reserved. * Use of this source code is governed by a BSD-style * license that can be found in the BSD_LICENSE file. @@ -44,7 +44,7 @@ * related to snprintf(). */ -static const char * version_str = "1.13 20190108"; +static const char * version_str = "1.14 20200901"; #define MAX_LINE_LEN 1024 @@ -595,11 +595,11 @@ main(int argc, char * argv[]) elapsed_msecs = (end_tm.tv_sec - start_tm.tv_sec) * 1000; elapsed_msecs += (end_tm.tv_nsec - start_tm.tv_nsec) / 1000000; if (16 == byteswap_sz) - printf(" count16=%u\n", count16); + printf(" last k=%d, last count16=%u\n", k, count16); else if (32 == byteswap_sz) - printf(" count32=%u\n", count32); + printf(" last k=%d, last count32=%u\n", k, count32); else - printf(" count64=%" PRIu64 "\n", count64); + printf(" last k=%d, last count64=%" PRIu64 "\n", k, count64); printf("Unaligned elapsed milliseconds: %u\n", elapsed_msecs); count16 = 0; count32 = 0; @@ -640,11 +640,11 @@ main(int argc, char * argv[]) elapsed_msecs = (end_tm.tv_sec - start_tm.tv_sec) * 1000; elapsed_msecs += (end_tm.tv_nsec - start_tm.tv_nsec) / 1000000; if (16 == byteswap_sz) - printf(" count16=%u\n", count16); + printf(" last k=%d, last count16=%u\n", k, count16); else if (32 == byteswap_sz) - printf(" count32=%u\n", count32); + printf(" last k=%d, last count32=%u\n", k, count32); else - printf(" count64=%" PRIu64 "\n", count64); + printf(" last k=%d, last count64=%" PRIu64 "\n", k, count64); printf("Byteswap/memcpy elapsed milliseconds: %u\n", elapsed_msecs); count16 = 0; count32 = 0; |