SWDEV-311270 - Add IPC support for memory pools

Initial implementation for hipMemPoolExportToShareableHandle,
hipMemPoolImportFromShareableHandle,
hipMemPoolExportPointer and hipMemPoolImportPointer

Change-Id: I0ebdc48e9163b394ded560adca6c38bbc5aee7d1


[ROCm/clr commit: 1a0c3e4dc4]
这个提交包含在:
German
2023-06-06 16:56:09 -04:00
提交者 German Andryeyev
父节点 d6086f9d69
当前提交 af5944dc71
修改 13 个文件,包含 454 行新增40 行删除
+36
查看文件
@@ -945,6 +945,42 @@ int Os::getProcessId() {
return ::_getpid();
}
// ================================================================================================
void* Os::CreateIpcMemory(const char* fname, size_t size, FileDesc* desc) {
void* addr = nullptr;
*desc = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE,
0, static_cast<DWORD>(size), fname);
if (*desc != 0) {
addr = MapViewOfFile(*desc, FILE_MAP_ALL_ACCESS, 0, 0, size);
}
return addr;
}
// ================================================================================================
void* Os::OpenIpcMemory(const char* fname, const FileDesc desc, size_t size) {
void* addr = nullptr;
FileDesc handle = desc;
if (fname != nullptr) {
handle = CreateFileMapping(desc, NULL, PAGE_READWRITE, 0, static_cast<DWORD>(size), fname);
}
if (handle != 0) {
addr = MapViewOfFile(handle, FILE_MAP_ALL_ACCESS, 0, 0, size);
}
return addr;
}
// ================================================================================================
void Os::CloseIpcMemory(const FileDesc desc, const void* ptr, size_t size) {
if (ptr != nullptr) {
UnmapViewOfFile(ptr);
}
if (desc != nullptr) {
CloseHandle(desc);
}
}
} // namespace amd
#endif // _WIN32 || __CYGWIN__