From 8b807ded354d8c2888de3204f386f31b64ad3170 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 24 Sep 2023 16:17:12 +0200 Subject: [PATCH] Add GNU/Hurd support --- spa/tests/stress-ringbuffer.c | 5 +++-- src/modules/module-access.c | 2 +- src/modules/module-rt.c | 6 ++++++ src/pipewire/conf.c | 2 +- src/pipewire/mem.c | 5 +++-- src/pipewire/pipewire.c | 6 +++--- src/pipewire/private.h | 2 +- src/pipewire/thread.c | 3 +++ 8 files changed, 21 insertions(+), 10 deletions(-) diff --git a/spa/tests/stress-ringbuffer.c b/spa/tests/stress-ringbuffer.c index 6a7e98fb5..6fb7dd4cf 100644 --- a/spa/tests/stress-ringbuffer.c +++ b/spa/tests/stress-ringbuffer.c @@ -11,10 +11,11 @@ #define ARRAY_SIZE 63 #define MAX_VALUE 0x10000 -#if defined(__FreeBSD__) || defined(__MidnightBSD__) +#if defined(__FreeBSD__) || defined(__MidnightBSD__) || defined (__GNU__) #include #if (__FreeBSD_version >= 1400000 && __FreeBSD_version < 1400043) \ - || (__FreeBSD_version < 1300523) || defined(__MidnightBSD__) + || (__FreeBSD_version < 1300523) || defined(__MidnightBSD__) \ + || defined (__GNU__) static int sched_getcpu(void) { return -1; }; #endif #endif diff --git a/src/modules/module-access.c b/src/modules/module-access.c index aeccffaba..eae64f1ce 100644 --- a/src/modules/module-access.c +++ b/src/modules/module-access.c @@ -143,7 +143,7 @@ static int get_exe_name(int pid, char *buf, size_t buf_size) * (in the current namespace). */ -#if defined(__linux__) +#if defined(__linux__) || defined(__GNU__) spa_scnprintf(path, sizeof(path), "/proc/%u/exe", pid); #elif defined(__FreeBSD__) || defined(__MidnightBSD__) spa_scnprintf(path, sizeof(path), "/proc/%u/file", pid); diff --git a/src/modules/module-rt.c b/src/modules/module-rt.c index a5959d085..5e30ac798 100644 --- a/src/modules/module-rt.c +++ b/src/modules/module-rt.c @@ -35,6 +35,9 @@ #if defined(__FreeBSD__) || defined(__MidnightBSD__) #include #endif +#if defined(__GNU__) +#include +#endif #include #include #include @@ -221,6 +224,9 @@ static pid_t _gettid(void) long pid; thr_self(&pid); return (pid_t)pid; +#elif defined(__GNU__) + mach_port_t thread = mach_thread_self(); + return (pid_t)thread; #else #error "No gettid impl" #endif diff --git a/src/pipewire/conf.c b/src/pipewire/conf.c index a253ecb98..10416c322 100644 --- a/src/pipewire/conf.c +++ b/src/pipewire/conf.c @@ -18,7 +18,7 @@ #ifdef HAVE_PWD_H #include #endif -#if defined(__FreeBSD__) || defined(__MidnightBSD__) +#if defined(__FreeBSD__) || defined(__MidnightBSD__) || defined(__GNU__) #ifndef O_PATH #define O_PATH 0 #endif diff --git a/src/pipewire/mem.c b/src/pipewire/mem.c index a63aae49c..7b63a3033 100644 --- a/src/pipewire/mem.c +++ b/src/pipewire/mem.c @@ -25,7 +25,8 @@ PW_LOG_TOPIC_EXTERN(log_mem); #define PW_LOG_TOPIC_DEFAULT log_mem -#if !defined(__FreeBSD__) && !defined(__MidnightBSD__) && !defined(HAVE_MEMFD_CREATE) +#if !defined(__FreeBSD__) && !defined(__MidnightBSD__) && !defined(__GNU__) \ + && !defined(HAVE_MEMFD_CREATE) /* * No glibc wrappers exist for memfd_create(2), so provide our own. * @@ -42,7 +43,7 @@ static inline int memfd_create(const char *name, unsigned int flags) #define HAVE_MEMFD_CREATE 1 #endif -#if defined(__FreeBSD__) || defined(__MidnightBSD__) +#if defined(__FreeBSD__) || defined(__MidnightBSD__) || defined(__GNU__) #define MAP_LOCKED 0 #endif diff --git a/src/pipewire/pipewire.c b/src/pipewire/pipewire.c index 2d5fce24f..ada0d13be 100644 --- a/src/pipewire/pipewire.c +++ b/src/pipewire/pipewire.c @@ -7,7 +7,7 @@ #include #include #include -#if !defined(__FreeBSD__) && !defined(__MidnightBSD__) +#if !defined(__FreeBSD__) && !defined(__MidnightBSD__) && !defined(__GNU__) #include #endif #include @@ -720,7 +720,7 @@ static void init_prgname(void) static char name[PATH_MAX]; spa_memzero(name, sizeof(name)); -#if defined(__linux__) || defined(__FreeBSD_kernel__) || defined(__MidnightBSD_kernel__) +#if defined(__linux__) || defined(__FreeBSD_kernel__) || defined(__MidnightBSD_kernel__) || defined(__GNU__) { if (readlink("/proc/self/exe", name, sizeof(name)-1) > 0) { prgname = strrchr(name, '/') + 1; @@ -738,7 +738,7 @@ static void init_prgname(void) } } #endif -#if !defined(__FreeBSD__) && !defined(__MidnightBSD__) +#if !defined(__FreeBSD__) && !defined(__MidnightBSD__) && !defined(__GNU__) { if (prctl(PR_GET_NAME, (unsigned long) name, 0, 0, 0) == 0) { prgname = name; diff --git a/src/pipewire/private.h b/src/pipewire/private.h index 4c225e36a..b753b9ebb 100644 --- a/src/pipewire/private.h +++ b/src/pipewire/private.h @@ -22,7 +22,7 @@ extern "C" { #include #include -#if defined(__FreeBSD__) || defined(__MidnightBSD__) +#if defined(__FreeBSD__) || defined(__MidnightBSD__) || defined(__GNU__) struct ucred { }; #endif diff --git a/src/pipewire/thread.c b/src/pipewire/thread.c index 68a708180..4f753a9f9 100644 --- a/src/pipewire/thread.c +++ b/src/pipewire/thread.c @@ -53,6 +53,9 @@ int pthread_setname_np(pthread_t thread, const char *name) } #endif #endif +#if defined(__GNU__) +int pthread_setname_np(pthread_t thread, const char *name) { return 0; } +#endif static struct spa_thread *impl_create(void *object, const struct spa_dict *props,