package/mesa3d: add compile patch for linux < 3.5

The kcmp() system call first appeared in linux 3.5,
and was also not there before linux 5.12 if
CONFIG_CHECKPOINT_RESTORE was not set.

See: https://man7.org/linux/man-pages/man2/kcmp.2.html

Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
(cherry picked from commit 7b71ce5018)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Thomas Devoogdt 2023-12-12 14:56:34 +01:00 committed by Peter Korsgaard
parent df95958b06
commit c1855c5abe

View File

@ -0,0 +1,68 @@
From b60974fac8a2f4c85cbb2ca788fc4ec3e81998f9 Mon Sep 17 00:00:00 2001
From: Thomas Devoogdt <thomas.devoogdt@barco.com>
Date: Tue, 17 Aug 2021 11:54:49 +0200
Subject: [PATCH] util: os_same_file_description: fix unknown linux < 3.5
syscall SYS_kcmp
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
https://man7.org/linux/man-pages/man2/kcmp.2.html
The kcmp() system call first appeared in Linux 3.5.
But was probably also not supported by all major platforms
at that time. So fallback to the check that is done for windows.
Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Michel Dänzer <mdaenzer@redhat.com>
Upstream: https://gitlab.freedesktop.org/mesa/mesa/-/commit/3ef514982441ce496aa127611edd26b9867f4b95
Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
---
src/util/os_file.c | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)
diff --git a/src/util/os_file.c b/src/util/os_file.c
index 5fb30f2d908..464425a9b87 100644
--- a/src/util/os_file.c
+++ b/src/util/os_file.c
@@ -202,29 +202,23 @@ os_read_file(const char *filename, size_t *size)
/* copied from <linux/kcmp.h> */
#define KCMP_FILE 0
+#endif
+
int
os_same_file_description(int fd1, int fd2)
{
+#ifdef SYS_kcmp
pid_t pid = getpid();
+#endif
/* Same file descriptor trivially implies same file description */
if (fd1 == fd2)
return 0;
+#ifdef SYS_kcmp
return syscall(SYS_kcmp, pid, pid, KCMP_FILE, fd1, fd2);
-}
-
#else
-
-int
-os_same_file_description(int fd1, int fd2)
-{
- /* Same file descriptor trivially implies same file description */
- if (fd1 == fd2)
- return 0;
-
/* Otherwise we can't tell */
return -1;
-}
-
#endif
+}
--
2.34.1