/* NA test routines */ static int test_send(struct na_test_params *params) { na_tag_t send_tag = NA_TEST_SEND_TAG; na_op_id_t op_id = NA_OP_ID_NULL; na_return_t na_ret; /* Send a message to addr */ sprintf(params->send_buf, "Hello Server!"); /* Preposting response */ na_ret = NA_Msg_recv_expected(params->na_class, params->context, msg_expected_recv_cb, params, params->recv_buf, params->recv_buf_len, params->recv_buf_plugin_data, params->server_addr, 0, send_tag + 1, &op_id); if (na_ret != NA_SUCCESS) { fprintf(stderr, "Could not prepost recv of expected message\n"); return EXIT_FAILURE; } /* Cancel and repost message */ na_ret = NA_Cancel(params->na_class, params->context, op_id); if (na_ret != NA_SUCCESS) { fprintf(stderr, "Could not cancel recv of expected message\n"); return EXIT_FAILURE; } na_ret = NA_Msg_recv_expected(params->na_class, params->context, msg_expected_recv_cb, params, params->recv_buf, params->recv_buf_len, params->recv_buf_plugin_data, params->server_addr, 0, send_tag + 1, NA_OP_ID_IGNORE); if (na_ret != NA_SUCCESS) { fprintf(stderr, "Could not prepost recv of expected message\n"); return EXIT_FAILURE; } /* Try to cancel unexpected send */ op_id = NA_OP_ID_NULL; na_ret = NA_Msg_send_unexpected(params->na_class, params->context, msg_unexpected_send_cb, params, params->send_buf, params->send_buf_len, params->send_buf_plugin_data, params->server_addr, 0, send_tag, &op_id); if (na_ret != NA_SUCCESS) { fprintf(stderr, "Could not start send of unexpected message\n"); return EXIT_FAILURE; } na_ret = NA_Cancel(params->na_class, params->context, op_id); if (na_ret != NA_SUCCESS) { fprintf(stderr, "Could not cancel send of unexpected message\n"); return EXIT_FAILURE; } return EXIT_SUCCESS; }
/*---------------------------------------------------------------------------*/ hg_return_t HG_Bulk_cancel(hg_op_id_t op_id) { struct hg_bulk_op_id *hg_bulk_op_id = (struct hg_bulk_op_id *) op_id; hg_return_t ret = HG_SUCCESS; if (!hg_bulk_op_id) { HG_LOG_ERROR("NULL HG bulk operation ID"); ret = HG_INVALID_PARAM; goto done; } if (HG_UTIL_TRUE != hg_atomic_cas32(&hg_bulk_op_id->completed, 1, 0)) { unsigned int i = 0; /* Cancel all NA operations issued */ for (i = 0; i < hg_bulk_op_id->op_count; i++) { na_return_t na_ret; /* Cancel NA operation */ na_ret = NA_Cancel(HG_Core_class_get_na(hg_bulk_op_id->hg_class), HG_Core_context_get_na(hg_bulk_op_id->context), hg_bulk_op_id->na_op_ids[i]); if (na_ret != NA_SUCCESS) { HG_LOG_ERROR("Could not cancel op id"); ret = HG_NA_ERROR; goto done; } } } done: return ret; }
static int test_bulk(struct na_test_params *params) { na_tag_t bulk_tag = NA_TEST_BULK_TAG, ack_tag = NA_TEST_BULK_ACK_TAG; na_return_t na_ret; na_op_id_t op_id; /* Register memory */ printf("Registering local memory...\n"); na_ret = NA_Mem_handle_create(params->na_class, params->bulk_buf, sizeof(int) * params->bulk_size, NA_MEM_READWRITE, ¶ms->local_mem_handle); if (na_ret != NA_SUCCESS) { fprintf(stderr, "Could not create bulk handle\n"); return EXIT_FAILURE; } na_ret = NA_Mem_register(params->na_class, params->local_mem_handle); if (na_ret != NA_SUCCESS) { fprintf(stderr, "Could not create bulk handle\n"); return EXIT_FAILURE; } /* Serialize mem handle */ printf("Serializing bulk memory handle...\n"); na_ret = NA_Mem_handle_serialize(params->na_class, params->send_buf, params->send_buf_len, params->local_mem_handle); if (na_ret != NA_SUCCESS) { fprintf(stderr, "Could not serialize memory handle\n"); return EXIT_FAILURE; } /* Recv completion ack */ printf("Preposting recv of transfer ack...\n"); na_ret = NA_Msg_recv_expected(params->na_class, params->context, ack_expected_recv_cb, params, params->recv_buf, params->recv_buf_len, params->server_addr, ack_tag, NA_OP_ID_IGNORE); if (na_ret != NA_SUCCESS) { fprintf(stderr, "Could not start receive of acknowledgment\n"); return EXIT_FAILURE; } /* Send mem handle */ printf("Sending local memory handle...\n"); na_ret = NA_Msg_send_expected(params->na_class, params->context, msg_expected_send_cb, params, params->send_buf, params->send_buf_len, params->server_addr, bulk_tag, &op_id); if (na_ret != NA_SUCCESS) { fprintf(stderr, "Could not start send of memory handle\n"); return EXIT_FAILURE; } na_ret = NA_Cancel(params->na_class, params->context, op_id); if (na_ret != NA_SUCCESS) { fprintf(stderr, "Could not cancel send of expected message\n"); return EXIT_FAILURE; } return EXIT_SUCCESS; }