mirror of
https://github.com/void-linux/void-packages.git
synced 2025-09-25 21:25:11 +02:00
In some cases packages like bubblewrap call realpath() without /proc being availiable, however musl's realpath used to require /proc. This was changed in later versions of musl so we import those changes here. This also adds gettid(). This function was added to later versions of musl and removes the need to patch out calls to gettid() in various packages including, for example, mutter.
49 lines
1.6 KiB
Diff
49 lines
1.6 KiB
Diff
From d49cf07541bb54a5ac7aec1feec8514db33db8ea Mon Sep 17 00:00:00 2001
|
|
From: Rich Felker <dalias@aerifal.cx>
|
|
Date: Mon, 17 Aug 2020 20:12:53 -0400
|
|
Subject: [PATCH] add gettid function
|
|
|
|
this is a prerequisite for addition of other interfaces that use
|
|
kernel tids, including futex and SIGEV_THREAD_ID.
|
|
|
|
there is some ambiguity as to whether the semantic return type should
|
|
be int or pid_t. either way, futex API imposes a contract that the
|
|
values fit in int (excluding some upper reserved bits). glibc used
|
|
pid_t, so in the interest of not having gratuitous mismatch (the
|
|
underlying types are the same anyway), pid_t is used here as well.
|
|
|
|
while conceptually this is a syscall, the copy stored in the thread
|
|
structure is always valid in all contexts where it's valid to call
|
|
libc functions, so it's used to avoid the syscall.
|
|
---
|
|
include/unistd.h | 1 +
|
|
src/linux/gettid.c | 8 ++++++++
|
|
2 files changed, 9 insertions(+)
|
|
create mode 100644 src/linux/gettid.c
|
|
|
|
diff --git a/include/unistd.h b/include/unistd.h
|
|
index 7bcbff943..07584a23e 100644
|
|
--- a/include/unistd.h
|
|
+++ b/include/unistd.h
|
|
@@ -190,6 +190,7 @@ int syncfs(int);
|
|
int euidaccess(const char *, int);
|
|
int eaccess(const char *, int);
|
|
ssize_t copy_file_range(int, off_t *, int, off_t *, size_t, unsigned);
|
|
+pid_t gettid(void);
|
|
#endif
|
|
|
|
#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
|
|
diff --git a/src/linux/gettid.c b/src/linux/gettid.c
|
|
new file mode 100644
|
|
index 000000000..70767137e
|
|
--- /dev/null
|
|
+++ b/src/linux/gettid.c
|
|
@@ -0,0 +1,8 @@
|
|
+#define _GNU_SOURCE
|
|
+#include <unistd.h>
|
|
+#include "pthread_impl.h"
|
|
+
|
|
+pid_t gettid(void)
|
|
+{
|
|
+ return __pthread_self()->tid;
|
|
+}
|