@@ -3236,16 +3236,16 @@ hipError_t hipIpcGetMemHandle(hipIpcMemHandle_t* handle, void* dev_ptr) {
32363236 HIP_INIT_API (hipIpcGetMemHandle, handle, dev_ptr);
32373237
32383238 amd::Device* device = nullptr ;
3239- ihipIpcMemHandle_t * ihandle = nullptr ;
3239+ amd::MemObjMap::IpcMemHandle * ihandle = nullptr ;
32403240
32413241 if ((handle == nullptr ) || (dev_ptr == nullptr )) {
32423242 HIP_RETURN (hipErrorInvalidValue);
32433243 }
32443244
32453245 device = hip::getCurrentDevice ()->devices ()[0 ];
3246- ihandle = reinterpret_cast <ihipIpcMemHandle_t *>(handle);
3246+ ihandle = reinterpret_cast <amd::MemObjMap::IpcMemHandle *>(handle);
32473247
3248- if (!device->IpcCreate (dev_ptr, &(ihandle->psize ), &( ihandle->ipc_handle ) , &(ihandle->poffset ))) {
3248+ if (!device->IpcCreate (dev_ptr, &(ihandle->psize ), ihandle->ipc_handle , &(ihandle->poffset ))) {
32493249 LogPrintfError (" IPC memory creation failed for memory: 0x%x" , dev_ptr);
32503250 HIP_RETURN (hipErrorInvalidValue);
32513251 }
@@ -3256,10 +3256,9 @@ hipError_t hipIpcGetMemHandle(hipIpcMemHandle_t* handle, void* dev_ptr) {
32563256
32573257hipError_t hipIpcOpenMemHandle (void ** dev_ptr, hipIpcMemHandle_t handle, unsigned int flags) {
32583258 HIP_INIT_API (hipIpcOpenMemHandle, dev_ptr, &handle, flags);
3259-
32603259 amd::Memory* amd_mem_obj = nullptr ;
32613260 amd::Device* device = nullptr ;
3262- ihipIpcMemHandle_t * ihandle = nullptr ;
3261+ amd::MemObjMap::IpcMemHandle * ihandle = nullptr ;
32633262 size_t offset = 0 ;
32643263
32653264 if (dev_ptr == nullptr || flags != hipIpcMemLazyEnablePeerAccess) {
@@ -3268,7 +3267,7 @@ hipError_t hipIpcOpenMemHandle(void** dev_ptr, hipIpcMemHandle_t handle, unsigne
32683267
32693268 /* Call the IPC Attach from Device class */
32703269 device = hip::getCurrentDevice ()->devices ()[0 ];
3271- ihandle = reinterpret_cast <ihipIpcMemHandle_t *>(&handle);
3270+ ihandle = reinterpret_cast <amd::MemObjMap::IpcMemHandle *>(&handle);
32723271
32733272 if (ihandle->psize == 0 ) {
32743273 HIP_RETURN (hipErrorInvalidValue);
@@ -3278,9 +3277,9 @@ hipError_t hipIpcOpenMemHandle(void** dev_ptr, hipIpcMemHandle_t handle, unsigne
32783277 HIP_RETURN (hipErrorInvalidContext);
32793278 }
32803279
3281- amd_mem_obj = amd::MemObjMap::FindIpcHandleMemObj (ihandle);
3280+ amd_mem_obj = amd::MemObjMap::FindIpcHandleMemObj (* ihandle);
32823281 if (amd_mem_obj == nullptr ) {
3283- if (!device->IpcAttach (&( ihandle->ipc_handle ) , ihandle->psize , ihandle->poffset , flags,
3282+ if (!device->IpcAttach (ihandle->ipc_handle , ihandle->psize , ihandle->poffset , flags,
32843283 dev_ptr)) {
32853284 LogPrintfError (
32863285 " Cannot attach ipc_handle: with ipc_size: %u"
@@ -3289,7 +3288,7 @@ hipError_t hipIpcOpenMemHandle(void** dev_ptr, hipIpcMemHandle_t handle, unsigne
32893288 HIP_RETURN (hipErrorInvalidDevicePointer);
32903289 }
32913290 amd_mem_obj = getMemoryObject (*dev_ptr, offset);
3292- amd::MemObjMap::AddIpcHandleMemObj (ihandle, amd_mem_obj);
3291+ amd::MemObjMap::AddIpcHandleMemObj (* ihandle, amd_mem_obj);
32933292 } else {
32943293 // Handle was already opened by the same process
32953294 *dev_ptr = amd_mem_obj->getSvmPtr ();
@@ -3330,18 +3329,10 @@ hipError_t hipIpcCloseMemHandle(void* dev_ptr) {
33303329 HIP_RETURN (hipErrorInvalidValue);
33313330 }
33323331
3333- // If handle is opened more than once, do detach on last release call
3334- if (amd_mem_obj->referenceCount () == 1 ) {
3335- auto device_id = amd_mem_obj->getUserData ().deviceId ;
3336- g_devices[device_id]->SyncAllStreams ();
3332+ auto device_id = amd_mem_obj->getUserData ().deviceId ;
3333+ g_devices[device_id]->SyncAllStreams ();
33373334
3338- // Remove entry from the map
3339- amd::MemObjMap::RemoveIpcHandleMemObj (amd_mem_obj);
3340- /* detach the memory */
3341- device->IpcDetach (dev_ptr);
3342- } else {
3343- amd_mem_obj->release ();
3344- }
3335+ amd_mem_obj->release ();
33453336
33463337 HIP_RETURN (hipSuccess);
33473338}
0 commit comments