Module: Mesa
Branch: main
Commit: 3ef514982441ce496aa127611edd26b9867f4b95
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3ef514982441ce496aa127611edd26b9867f4b95

Author: Thomas Devoogdt <[email protected]>
Date:   Tue Aug 17 11:54:49 2021 +0200

util: os_same_file_description: fix unknown linux < 3.5 syscall SYS_kcmp

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 <[email protected]>
Acked-by: Yonggang Luo <[email protected]>
Acked-by: Michel Dänzer <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18517>

---

 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
+}

Reply via email to