feature: Support for opaque IPC handles on Windows and Linux

- Added support for creating and managing opaque IPC NT handles in the
WDDM layer.
- Introduced a new flag `shareableWithoutNTHandle` to indicate if memory
can be shared without an NT handle.
- Updated the `isShareableMemory` method to accommodate this new flag.
- Added debug variable EnableShareableWithoutNTHandle to control the
behavior of sharing memory without NT handles until requested.
- Updated Linux path to enable sharing DMA Buf FDs between processes
for use in pidfd_getfd
- Updated getfd and get IPC Handle helper functions to support opaque or
previous versions

Related-To: NEO-15345 , NEO-15346 , NEO-15347, NEO-10380

Signed-off-by: Neil R. Spruit <neil.r.spruit@intel.com>
This commit is contained in:
Neil R. Spruit
2025-08-16 01:44:40 +00:00
committed by Compute-Runtime-Automation
parent c0ea89062b
commit 43ebc17e17
54 changed files with 1932 additions and 132 deletions

View File

@@ -13,6 +13,7 @@
#include <iostream>
#include <poll.h>
#include <sys/mman.h>
#include <sys/prctl.h>
#include <sys/stat.h>
#include <unistd.h>
@@ -59,6 +60,8 @@ long sysconf(int name);
int mkfifo(const char *pathname, mode_t mode);
int pidfdopen(pid_t pid, unsigned int flags);
int pidfdgetfd(int pidfd, int targetfd, unsigned int flags);
int prctl(int option, unsigned long arg);
char **getEnviron();
} // namespace SysCalls
} // namespace NEO

View File

@@ -205,6 +205,10 @@ int pidfdgetfd(int pidfd, int targetfd, unsigned int flags) {
return static_cast<int>(retval);
}
int prctl(int option, unsigned long arg) {
return ::prctl(option, arg);
}
off_t lseek(int fd, off_t offset, int whence) noexcept {
return ::lseek(fd, offset, whence);
}