examples/iscsi-dd.c: add HAVE_CLOCK_GETTIME guards

Only show time stats if clock_gettime(3) is available.
It's actually possible to have clock_gettime(3) and not yet support
CLOCK_MONOTONIC on legacy systems, however on macOS, they all arrived
together in macOS 10.12. Rather than add new configure checks for
CLOCK_MONOTONIC, I opted to use the existing HAVE_CLOCK_GETTIME.
This commit is contained in:
Sevan Janiyan
2025-07-16 18:49:25 +01:00
parent 46631b9083
commit 1100aa4aa4

View File

@@ -557,6 +557,7 @@ static void usage_exit(int status)
exit(status); exit(status);
} }
#if HAVE_CLOCK_GETTIME
static void show_perf(struct timespec *start_time, static void show_perf(struct timespec *start_time,
struct timespec *end_time, struct timespec *end_time,
uint64_t num_blocks, uint64_t num_blocks,
@@ -576,6 +577,7 @@ static void show_perf(struct timespec *start_time,
printf("\r%"PRIu64" blocks (%"PRIu64" sized) copied in %g seconds," printf("\r%"PRIu64" blocks (%"PRIu64" sized) copied in %g seconds,"
" %g%c/s.\n", num_blocks, block_size, elapsed, ubytes_per_sec, u[i]); " %g%c/s.\n", num_blocks, block_size, elapsed, ubytes_per_sec, u[i]);
} }
#endif
static void iscsi_endpoint_init(const char *url, static void iscsi_endpoint_init(const char *url,
const char *usage, const char *usage,
@@ -635,7 +637,9 @@ int main(int argc, char *argv[])
struct client client; struct client client;
struct timespec start_time; struct timespec start_time;
struct timespec end_time; struct timespec end_time;
#if HAVE_CLOCK_GETTIME
int gettime_ret; int gettime_ret;
#endif
static struct option long_options[] = { static struct option long_options[] = {
{"dst", required_argument, NULL, 'd'}, {"dst", required_argument, NULL, 'd'},
{"src", required_argument, NULL, 's'}, {"src", required_argument, NULL, 's'},
@@ -719,10 +723,12 @@ int main(int argc, char *argv[])
exit(10); exit(10);
} }
#if HAVE_CLOCK_GETTIME
gettime_ret = clock_gettime(CLOCK_MONOTONIC, &start_time); gettime_ret = clock_gettime(CLOCK_MONOTONIC, &start_time);
if (gettime_ret < 0) { if (gettime_ret < 0) {
fprintf(stderr, "clock_gettime(CLOCK_MONOTONIC) failed\n"); fprintf(stderr, "clock_gettime(CLOCK_MONOTONIC) failed\n");
} }
#endif
if (client.use_xcopy) { if (client.use_xcopy) {
fill_xcopy_queue(&client); fill_xcopy_queue(&client);
@@ -755,6 +761,7 @@ int main(int argc, char *argv[])
} }
} }
#if HAVE_CLOCK_GETTIME
if (gettime_ret == 0) { if (gettime_ret == 0) {
/* start_time is valid, so dump perf with a valid end_time */ /* start_time is valid, so dump perf with a valid end_time */
gettime_ret = clock_gettime(CLOCK_MONOTONIC, &end_time); gettime_ret = clock_gettime(CLOCK_MONOTONIC, &end_time);
@@ -763,6 +770,7 @@ int main(int argc, char *argv[])
client.src.blocksize); client.src.blocksize);
} }
} }
#endif
iscsi_logout_sync(client.src.iscsi); iscsi_logout_sync(client.src.iscsi);
iscsi_destroy_context(client.src.iscsi); iscsi_destroy_context(client.src.iscsi);