Skip to content

Commit 1af57d6

Browse files
committed
EXAMPLES: Fixed ucp_hello_world help output.
1 parent c2b215c commit 1af57d6

File tree

4 files changed

+73
-36
lines changed

4 files changed

+73
-36
lines changed

examples/hello_world_util.h

+7
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@ static ucs_memory_type_t test_mem_type = UCS_MEMORY_TYPE_HOST;
5757
} while(0)
5858

5959

60+
typedef enum {
61+
PARSE_CMD_STATUS_OK,
62+
PARSE_CMD_STATUS_ERROR,
63+
PARSE_CMD_STATUS_PRINT_HELP
64+
} parse_cmd_status_t;
65+
66+
6067
void print_common_help(void);
6168

6269
void *mem_type_malloc(size_t length)

examples/ucp_client_server.c

+19-10
Original file line numberDiff line numberDiff line change
@@ -612,8 +612,9 @@ static void usage()
612612
/**
613613
* Parse the command line arguments.
614614
*/
615-
static int parse_cmd(int argc, char *const argv[], char **server_addr,
616-
char **listen_addr, send_recv_type_t *send_recv_type)
615+
static parse_cmd_status_t parse_cmd(int argc, char *const argv[],
616+
char **server_addr, char **listen_addr,
617+
send_recv_type_t *send_recv_type)
617618
{
618619
int c = 0;
619620
int port;
@@ -643,7 +644,7 @@ static int parse_cmd(int argc, char *const argv[], char **server_addr,
643644
port = atoi(optarg);
644645
if ((port < 0) || (port > UINT16_MAX)) {
645646
fprintf(stderr, "Wrong server port number %d\n", port);
646-
return -1;
647+
return PARSE_CMD_STATUS_ERROR;
647648
}
648649
server_port = port;
649650
break;
@@ -657,30 +658,32 @@ static int parse_cmd(int argc, char *const argv[], char **server_addr,
657658
test_string_length = atol(optarg);
658659
if (test_string_length < 0) {
659660
fprintf(stderr, "Wrong string size %ld\n", test_string_length);
660-
return UCS_ERR_UNSUPPORTED;
661+
return PARSE_CMD_STATUS_ERROR;
661662
}
662663
break;
663664
case 'v':
664665
iov_cnt = atol(optarg);
665666
if (iov_cnt <= 0) {
666667
fprintf(stderr, "Wrong iov count %ld\n", iov_cnt);
667-
return UCS_ERR_UNSUPPORTED;
668+
return PARSE_CMD_STATUS_ERROR;
668669
}
669670
break;
670671
case 'm':
671672
test_mem_type = parse_mem_type(optarg);
672673
if (test_mem_type == UCS_MEMORY_TYPE_LAST) {
673-
return UCS_ERR_UNSUPPORTED;
674+
return PARSE_CMD_STATUS_ERROR;
674675
}
675676
break;
676677
case 'h':
678+
usage();
679+
return PARSE_CMD_STATUS_PRINT_HELP;
677680
default:
678681
usage();
679-
return -1;
682+
return PARSE_CMD_STATUS_ERROR;
680683
}
681684
}
682685

683-
return 0;
686+
return PARSE_CMD_STATUS_OK;
684687
}
685688

686689
static char* sockaddr_get_ip_str(const struct sockaddr_storage *sock_addr,
@@ -1107,14 +1110,20 @@ int main(int argc, char **argv)
11071110
send_recv_type_t send_recv_type = CLIENT_SERVER_SEND_RECV_DEFAULT;
11081111
char *server_addr = NULL;
11091112
char *listen_addr = NULL;
1113+
parse_cmd_status_t parse_cmd_status;
11101114
int ret;
11111115

11121116
/* UCP objects */
11131117
ucp_context_h ucp_context;
11141118
ucp_worker_h ucp_worker;
11151119

1116-
ret = parse_cmd(argc, argv, &server_addr, &listen_addr, &send_recv_type);
1117-
if (ret != 0) {
1120+
parse_cmd_status = parse_cmd(argc, argv, &server_addr, &listen_addr,
1121+
&send_recv_type);
1122+
if (parse_cmd_status == PARSE_CMD_STATUS_PRINT_HELP) {
1123+
ret = 0;
1124+
goto err;
1125+
} else if (parse_cmd_status == PARSE_CMD_STATUS_ERROR) {
1126+
ret = -1;
11181127
goto err;
11191128
}
11201129

examples/ucp_hello_world.c

+22-10
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ static const char *addr_msg_str = "UCX address message";
8989
static const char *data_msg_str = "UCX data message";
9090
static int print_config = 0;
9191

92-
static ucs_status_t parse_cmd(int argc, char * const argv[], char **server_name);
92+
static parse_cmd_status_t
93+
parse_cmd(int argc, char *const argv[], char **server_name);
9394

9495
static void set_msg_data_len(struct msg *msg, uint64_t data_len)
9596
{
@@ -548,13 +549,20 @@ int main(int argc, char **argv)
548549
int oob_sock = -1;
549550
int ret = -1;
550551

552+
parse_cmd_status_t parse_cmd_status;
553+
551554
memset(&ucp_params, 0, sizeof(ucp_params));
552555
memset(&worker_attr, 0, sizeof(worker_attr));
553556
memset(&worker_params, 0, sizeof(worker_params));
554557

555558
/* Parse the command line */
556-
status = parse_cmd(argc, argv, &client_target_name);
557-
CHKERR_JUMP(status != UCS_OK, "parse_cmd\n", err);
559+
parse_cmd_status = parse_cmd(argc, argv, &client_target_name);
560+
if (parse_cmd_status == PARSE_CMD_STATUS_PRINT_HELP) {
561+
return 0;
562+
}
563+
564+
CHKERR_JUMP(parse_cmd_status == PARSE_CMD_STATUS_ERROR,
565+
"parse command line\n", err);
558566

559567
/* UCP initialization */
560568
status = ucp_config_read(NULL, NULL, &config);
@@ -682,7 +690,8 @@ static void print_usage()
682690
fprintf(stderr, "\n");
683691
}
684692

685-
ucs_status_t parse_cmd(int argc, char * const argv[], char **server_name)
693+
static parse_cmd_status_t
694+
parse_cmd(int argc, char *const argv[], char **server_name)
686695
{
687696
int c = 0, idx = 0;
688697

@@ -710,7 +719,7 @@ ucs_status_t parse_cmd(int argc, char * const argv[], char **server_name)
710719
err_handling_opt.failure_mode = FAILURE_MODE_KEEPALIVE;
711720
} else {
712721
print_usage();
713-
return UCS_ERR_UNSUPPORTED;
722+
return PARSE_CMD_STATUS_ERROR;
714723
}
715724
break;
716725
case 'n':
@@ -723,29 +732,31 @@ ucs_status_t parse_cmd(int argc, char * const argv[], char **server_name)
723732
server_port = atoi(optarg);
724733
if (server_port <= 0) {
725734
fprintf(stderr, "Wrong server port number %d\n", server_port);
726-
return UCS_ERR_UNSUPPORTED;
735+
return PARSE_CMD_STATUS_ERROR;
727736
}
728737
break;
729738
case 's':
730739
test_string_length = atol(optarg);
731740
if (test_string_length < 0) {
732741
fprintf(stderr, "Wrong string size %ld\n", test_string_length);
733-
return UCS_ERR_UNSUPPORTED;
742+
return PARSE_CMD_STATUS_ERROR;
734743
}
735744
break;
736745
case 'm':
737746
test_mem_type = parse_mem_type(optarg);
738747
if (test_mem_type == UCS_MEMORY_TYPE_LAST) {
739-
return UCS_ERR_UNSUPPORTED;
748+
return PARSE_CMD_STATUS_ERROR;
740749
}
741750
break;
742751
case 'c':
743752
print_config = 1;
744753
break;
745754
case 'h':
755+
print_usage();
756+
return PARSE_CMD_STATUS_PRINT_HELP;
746757
default:
747758
print_usage();
748-
return UCS_ERR_UNSUPPORTED;
759+
return PARSE_CMD_STATUS_ERROR;
749760
}
750761
}
751762
fprintf(stderr, "INFO: UCP_HELLO_WORLD mode = %d server = %s port = %d, pid = %d\n",
@@ -754,5 +765,6 @@ ucs_status_t parse_cmd(int argc, char * const argv[], char **server_name)
754765
for (idx = optind; idx < argc; idx++) {
755766
fprintf(stderr, "WARNING: Non-option argument %s\n", argv[idx]);
756767
}
757-
return UCS_OK;
768+
769+
return PARSE_CMD_STATUS_OK;
758770
}

examples/uct_hello_world.c

+25-16
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,6 @@ typedef struct {
6363

6464
static void* desc_holder = NULL;
6565

66-
int print_err_usage(void);
67-
6866
static char *func_am_t_str(func_am_t func_am_type)
6967
{
7068
switch (func_am_type) {
@@ -419,14 +417,16 @@ static ucs_status_t dev_tl_lookup(const cmd_args_t *cmd_args,
419417
goto release_component_list;
420418
}
421419

422-
int print_err_usage()
420+
static void print_usage()
423421
{
424-
const char func_template[] = " -%c Select \"%s\" function to send the message%s\n";
422+
const char func_template[] =
423+
" -%c Select \"%s\" function to send the message%s\n";
425424

426425
fprintf(stderr, "Usage: uct_hello_world [parameters]\n");
427426
fprintf(stderr, "UCT hello world client/server example utility\n");
428427
fprintf(stderr, "\nParameters are:\n");
429-
fprintf(stderr, func_template, 'i', func_am_t_str(FUNC_AM_SHORT), " (default)");
428+
fprintf(stderr, func_template, 'i', func_am_t_str(FUNC_AM_SHORT),
429+
" (default)");
430430
fprintf(stderr, func_template, 'b', func_am_t_str(FUNC_AM_BCOPY), "");
431431
fprintf(stderr, func_template, 'z', func_am_t_str(FUNC_AM_ZCOPY), "");
432432
fprintf(stderr, " -d Select device name\n");
@@ -438,11 +438,10 @@ int print_err_usage()
438438
fprintf(stderr, "\nExample:\n");
439439
fprintf(stderr, " Server: uct_hello_world -d eth0 -t tcp\n");
440440
fprintf(stderr, " Client: uct_hello_world -d eth0 -t tcp -n localhost\n");
441-
442-
return UCS_ERR_UNSUPPORTED;
443441
}
444442

445-
int parse_cmd(int argc, char * const argv[], cmd_args_t *args)
443+
static parse_cmd_status_t
444+
parse_cmd(int argc, char *const argv[], cmd_args_t *args)
446445
{
447446
int c = 0, idx = 0;
448447

@@ -483,25 +482,28 @@ int parse_cmd(int argc, char * const argv[], cmd_args_t *args)
483482
if (args->server_port <= 0) {
484483
fprintf(stderr, "Wrong server port number %d\n",
485484
args->server_port);
486-
return UCS_ERR_UNSUPPORTED;
485+
return PARSE_CMD_STATUS_ERROR;
487486
}
488487
break;
489488
case 's':
490489
args->test_strlen = atol(optarg);
491490
if (args->test_strlen < 0) {
492491
fprintf(stderr, "Wrong string size %ld\n", args->test_strlen);
493-
return UCS_ERR_UNSUPPORTED;
492+
return PARSE_CMD_STATUS_ERROR;
494493
}
495494
break;
496495
case 'm':
497496
test_mem_type = parse_mem_type(optarg);
498497
if (test_mem_type == UCS_MEMORY_TYPE_LAST) {
499-
return UCS_ERR_UNSUPPORTED;
498+
return PARSE_CMD_STATUS_ERROR;
500499
}
501500
break;
502501
case 'h':
502+
print_usage();
503+
return PARSE_CMD_STATUS_PRINT_HELP;
503504
default:
504-
return print_err_usage();
505+
print_usage();
506+
return PARSE_CMD_STATUS_ERROR;
505507
}
506508
}
507509
fprintf(stdout, "INFO: UCT_HELLO_WORLD AM function = %s server = %s port = %d\n",
@@ -514,15 +516,17 @@ int parse_cmd(int argc, char * const argv[], cmd_args_t *args)
514516

515517
if (args->dev_name == NULL) {
516518
fprintf(stderr, "WARNING: device is not set\n");
517-
return print_err_usage();
519+
print_usage();
520+
return PARSE_CMD_STATUS_ERROR;
518521
}
519522

520523
if (args->tl_name == NULL) {
521524
fprintf(stderr, "WARNING: transport layer is not set\n");
522-
return print_err_usage();
525+
print_usage();
526+
return PARSE_CMD_STATUS_ERROR;
523527
}
524528

525-
return UCS_OK;
529+
return PARSE_CMD_STATUS_OK;
526530
}
527531

528532
/* The caller is responsible to free *rbuf */
@@ -591,9 +595,14 @@ int main(int argc, char **argv)
591595
iface_info_t if_info;
592596
uct_ep_params_t ep_params;
593597
int res;
598+
parse_cmd_status_t parse_cmd_status;
594599

595600
/* Parse the command line */
596-
if (parse_cmd(argc, argv, &cmd_args)) {
601+
parse_cmd_status = parse_cmd(argc, argv, &cmd_args);
602+
if (parse_cmd_status == PARSE_CMD_STATUS_PRINT_HELP) {
603+
status = UCS_OK;
604+
goto out;
605+
} else if (parse_cmd_status == PARSE_CMD_STATUS_ERROR) {
597606
status = UCS_ERR_INVALID_PARAM;
598607
goto out;
599608
}

0 commit comments

Comments
 (0)