/* * Copyright (C) Mellanox Technologies Ltd. 2019. ALL RIGHTS RESERVED. * See file LICENSE for terms. */ #include "jucx_common_def.h" #include "org_openucx_jucx_ucp_UcpMemory.h" #include "org_openucx_jucx_ucp_UcpRemoteKey.h" JNIEXPORT void JNICALL Java_org_openucx_jucx_ucp_UcpMemory_unmapMemoryNative(JNIEnv *env, jclass cls, jlong context_ptr, jlong mem_ptr) { ucs_status_t status = ucp_mem_unmap((ucp_context_h)context_ptr, (ucp_mem_h)mem_ptr); if (status != UCS_OK) { JNU_ThrowExceptionByStatus(env, status); } } JNIEXPORT jobject JNICALL Java_org_openucx_jucx_ucp_UcpMemory_getRkeyBufferNative(JNIEnv *env, jclass cls, jlong context_ptr, jlong mem_ptr) { void *rkey_buffer; size_t rkey_size; ucs_status_t status = ucp_rkey_pack((ucp_context_h)context_ptr, (ucp_mem_h)mem_ptr, &rkey_buffer, &rkey_size); if (status != UCS_OK) { JNU_ThrowExceptionByStatus(env, status); } return env->NewDirectByteBuffer(rkey_buffer, rkey_size); } JNIEXPORT void JNICALL Java_org_openucx_jucx_ucp_UcpMemory_releaseRkeyBufferNative(JNIEnv *env, jclass cls, jobject rkey_buf) { ucp_rkey_buffer_release(env->GetDirectBufferAddress(rkey_buf)); } JNIEXPORT void JNICALL Java_org_openucx_jucx_ucp_UcpRemoteKey_rkeyDestroy(JNIEnv *env, jclass cls, jlong rkey_ptr) { ucp_rkey_destroy((ucp_rkey_h) rkey_ptr); }