/*---------------------------------------------------------------------------*/ static int hg_bulk_transfer_cb(const struct na_cb_info *callback_info) { struct hg_bulk_op_id *hg_bulk_op_id = (struct hg_bulk_op_id *) callback_info->arg; na_return_t na_ret = NA_SUCCESS; int ret = 0; if (callback_info->ret == NA_CANCELED) { /* If canceled, mark handle as canceled */ hg_atomic_cas32(&hg_bulk_op_id->canceled, 0, 1); } else if (callback_info->ret != NA_SUCCESS) { HG_LOG_ERROR("Error in NA callback: %s", NA_Error_to_string(callback_info->ret)); na_ret = NA_PROTOCOL_ERROR; goto done; } /* When all NA transfers that correspond to bulk operation complete * add HG user callback to completion queue */ if ((unsigned int) hg_atomic_incr32(&hg_bulk_op_id->op_completed_count) == hg_bulk_op_id->op_count) { hg_bulk_complete(hg_bulk_op_id); ret++; } done: (void) na_ret; return ret; }
/*---------------------------------------------------------------------------*/ static na_return_t na_addr_lookup_cb(const struct na_cb_info *callback_info) { na_addr_t *addr_ptr = (na_addr_t *) callback_info->arg; na_return_t ret = NA_SUCCESS; if (callback_info->ret != NA_SUCCESS) { NA_LOG_ERROR("Return from callback with %s error code", NA_Error_to_string(callback_info->ret)); return ret; } *addr_ptr = callback_info->info.lookup.addr; return ret; }