1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
--- third_party/vulkan-deps/vulkan-loader/src/loader/vk_loader_platform.h.orig 2021-07-19 18:47:36 UTC
+++ third_party/vulkan-deps/vulkan-loader/src/loader/vk_loader_platform.h
@@ -35,7 +35,7 @@
#include "vulkan/vk_platform.h"
#include "vulkan/vk_sdk_platform.h"
-#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__QNXNTO__)
+#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__QNXNTO__) || defined(__FreeBSD__)
/* Linux-specific common code: */
// Headers:
@@ -52,6 +52,12 @@
#include <stdlib.h>
#include <libgen.h>
+#if defined(__FreeBSD__)
+#include <sys/types.h>
+#include <sys/user.h>
+#include <libutil.h>
+#endif
+
// VK Library Filenames, Paths, etc.:
#define PATH_SEPARATOR ':'
#define DIRECTORY_SYMBOL '/'
@@ -120,6 +126,17 @@ static inline char *loader_platform_executable_path(ch
int ret = proc_pidpath(pid, buffer, size);
if (ret <= 0) return NULL;
buffer[ret] = '\0';
+ return buffer;
+}
+#elif defined(__FreeBSD__)
+static inline char *loader_platform_executable_path(char *buffer, size_t size) {
+ pid_t pid = getpid();
+ struct kinfo_proc *p = kinfo_getproc(pid);
+ if (p == NULL) return NULL;
+ size_t len = strnlen(p->ki_comm, size - 1);
+ memcpy(buffer, p->ki_comm, len);
+ buffer[len] = '\0';
+ free(p);
return buffer;
}
#elif defined(__Fuchsia__)
|