lkml.org 
[lkml]   [2023]   [May]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 nolibc 13/15] tools/nolibc: s390: provide custom implementation for sys_fork
    Date
    From: Thomas Weißschuh <linux@weissschuh.net>

    On s390 the first two arguments to the clone() syscall are swapped,
    as documented in clone(2).

    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Cc: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    ---
    tools/include/nolibc/arch-s390.h | 9 +++++++++
    tools/include/nolibc/sys.h | 2 ++
    2 files changed, 11 insertions(+)

    diff --git a/tools/include/nolibc/arch-s390.h b/tools/include/nolibc/arch-s390.h
    index c62ee2472407..a738e7f3f8e8 100644
    --- a/tools/include/nolibc/arch-s390.h
    +++ b/tools/include/nolibc/arch-s390.h
    @@ -5,6 +5,7 @@

    #ifndef _NOLIBC_ARCH_S390_H
    #define _NOLIBC_ARCH_S390_H
    +#include <asm/signal.h>
    #include <asm/unistd.h>

    /* The struct returned by the stat() syscall, equivalent to stat64(). The
    @@ -223,4 +224,12 @@ void *sys_mmap(void *addr, size_t length, int prot, int flags, int fd,
    return (void *)my_syscall1(__NR_mmap, &args);
    }
    #define sys_mmap sys_mmap
    +
    +static __attribute__((unused))
    +pid_t sys_fork(void)
    +{
    + return my_syscall5(__NR_clone, 0, SIGCHLD, 0, 0, 0);
    +}
    +#define sys_fork sys_fork
    +
    #endif /* _NOLIBC_ARCH_S390_H */
    diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h
    index 1b9b91cd8b57..60dffb1cbf96 100644
    --- a/tools/include/nolibc/sys.h
    +++ b/tools/include/nolibc/sys.h
    @@ -336,6 +336,7 @@ void exit(int status)
    * pid_t fork(void);
    */

    +#ifndef sys_fork
    static __attribute__((unused))
    pid_t sys_fork(void)
    {
    @@ -351,6 +352,7 @@ pid_t sys_fork(void)
    #error Neither __NR_clone nor __NR_fork defined, cannot implement sys_fork()
    #endif
    }
    +#endif

    static __attribute__((unused))
    pid_t fork(void)
    --
    2.40.1
    \
     
     \ /
      Last update: 2023-05-18 16:58    [W:4.051 / U:0.320 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site