]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
syscall_wrappers: move signalfd()
authorChristian Brauner <christian.brauner@ubuntu.com>
Wed, 3 Oct 2018 11:08:51 +0000 (13:08 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Wed, 3 Oct 2018 11:08:51 +0000 (13:08 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/storage/nbd.c
src/lxc/syscall_wrappers.h
src/lxc/terminal.c
src/lxc/utils.h

index cc2289426c332b3237a1e7a7cc16f071b725c6e0..2fae1fdb25c8e165efeb8bfcc1dca65d5746fa56 100644 (file)
@@ -38,6 +38,7 @@
 #include "nbd.h"
 #include "storage.h"
 #include "storage_utils.h"
+#include "syscall_wrappers.h"
 #include "utils.h"
 
 #ifndef HAVE_STRLCPY
index 8661ceb4f89e008953575adbc90b2e6850ccfd1d..42d94db288e515cf3c3d9c95d84cbe75db1695ce 100644 (file)
@@ -24,6 +24,7 @@
 #define _GNU_SOURCE 1
 #endif
 #include <asm/unistd.h>
+#include <errno.h>
 #include <linux/keyctl.h>
 #include <sched.h>
 #include <stdint.h>
 #include <linux/memfd.h>
 #endif
 
+#ifdef HAVE_SYS_SIGNALFD_H
+#include <sys/signalfd.h>
+#endif
+
 typedef int32_t key_serial_t;
 
 #if !HAVE_KEYCTL
@@ -155,6 +160,81 @@ static inline int setns(int fd, int nstype)
 }
 #endif
 
+#ifndef HAVE_SYS_SIGNALFD_H
+struct signalfd_siginfo {
+       uint32_t ssi_signo;
+       int32_t ssi_errno;
+       int32_t ssi_code;
+       uint32_t ssi_pid;
+       uint32_t ssi_uid;
+       int32_t ssi_fd;
+       uint32_t ssi_tid;
+       uint32_t ssi_band;
+       uint32_t ssi_overrun;
+       uint32_t ssi_trapno;
+       int32_t ssi_status;
+       int32_t ssi_int;
+       uint64_t ssi_ptr;
+       uint64_t ssi_utime;
+       uint64_t ssi_stime;
+       uint64_t ssi_addr;
+       uint8_t __pad[48];
+};
+
+#ifndef __NR_signalfd4
+/* assume kernel headers are too old */
+#if __i386__
+#define __NR_signalfd4 327
+#elif __x86_64__
+#define __NR_signalfd4 289
+#elif __powerpc__
+#define __NR_signalfd4 313
+#elif __s390x__
+#define __NR_signalfd4 322
+#elif __arm__
+#define __NR_signalfd4 355
+#elif __mips__ && _MIPS_SIM == _ABIO32
+#define __NR_signalfd4 4324
+#elif __mips__ && _MIPS_SIM == _ABI64
+#define __NR_signalfd4 5283
+#elif __mips__ && _MIPS_SIM == _ABIN32
+#define __NR_signalfd4 6287
+#endif
+#endif
+
+#ifndef __NR_signalfd
+/* assume kernel headers are too old */
+#if __i386__
+#define __NR_signalfd 321
+#elif __x86_64__
+#define __NR_signalfd 282
+#elif __powerpc__
+#define __NR_signalfd 305
+#elif __s390x__
+#define __NR_signalfd 316
+#elif __arm__
+#define __NR_signalfd 349
+#elif __mips__ && _MIPS_SIM == _ABIO32
+#define __NR_signalfd 4317
+#elif __mips__ && _MIPS_SIM == _ABI64
+#define __NR_signalfd 5276
+#elif __mips__ && _MIPS_SIM == _ABIN32
+#define __NR_signalfd 6280
+#endif
+#endif
+
+static inline int signalfd(int fd, const sigset_t *mask, int flags)
+{
+       int retval;
+
+       retval = syscall(__NR_signalfd4, fd, mask, _NSIG / 8, flags);
+       if (errno == ENOSYS && flags == 0)
+               retval = syscall(__NR_signalfd, fd, mask, _NSIG / 8);
+
+       return retval;
+}
+#endif
+
 /* Define unshare() if missing from the C library */
 #ifndef HAVE_UNSHARE
 static inline int unshare(int flags)
index 03bd8983b3de5cde1782fea17147d263b220b402..4060e7f9b486f1f03ae004d25c169b34212696d8 100644 (file)
@@ -45,6 +45,7 @@
 #include "lxclock.h"
 #include "mainloop.h"
 #include "start.h"
+#include "syscall_wrappers.h"
 #include "terminal.h"
 #include "utils.h"
 
index 5f16eaedbd02bccd14e29359c1a7cfaee8f68daf..f7247a2d81879a284551ad52cede69149835e7ce 100644 (file)
@@ -56,86 +56,6 @@ extern char *get_rundir(void);
 #endif
 #endif
 
-/* Define signalfd() if missing from the C library */
-#ifdef HAVE_SYS_SIGNALFD_H
-#  include <sys/signalfd.h>
-#else
-/* assume kernel headers are too old */
-#include <stdint.h>
-struct signalfd_siginfo
-{
-       uint32_t ssi_signo;
-       int32_t ssi_errno;
-       int32_t ssi_code;
-       uint32_t ssi_pid;
-       uint32_t ssi_uid;
-       int32_t ssi_fd;
-       uint32_t ssi_tid;
-       uint32_t ssi_band;
-       uint32_t ssi_overrun;
-       uint32_t ssi_trapno;
-       int32_t ssi_status;
-       int32_t ssi_int;
-       uint64_t ssi_ptr;
-       uint64_t ssi_utime;
-       uint64_t ssi_stime;
-       uint64_t ssi_addr;
-       uint8_t __pad[48];
-};
-
-#  ifndef __NR_signalfd4
-/* assume kernel headers are too old */
-#    if __i386__
-#      define __NR_signalfd4 327
-#    elif __x86_64__
-#      define __NR_signalfd4 289
-#    elif __powerpc__
-#      define __NR_signalfd4 313
-#    elif __s390x__
-#      define __NR_signalfd4 322
-#    elif __arm__
-#      define __NR_signalfd4 355
-#    elif __mips__ && _MIPS_SIM == _ABIO32
-#      define __NR_signalfd4 4324
-#    elif __mips__ && _MIPS_SIM == _ABI64
-#      define __NR_signalfd4 5283
-#    elif __mips__ && _MIPS_SIM == _ABIN32
-#      define __NR_signalfd4 6287
-#    endif
-#endif
-
-#  ifndef __NR_signalfd
-/* assume kernel headers are too old */
-#    if __i386__
-#      define __NR_signalfd 321
-#    elif __x86_64__
-#      define __NR_signalfd 282
-#    elif __powerpc__
-#      define __NR_signalfd 305
-#    elif __s390x__
-#      define __NR_signalfd 316
-#    elif __arm__
-#      define __NR_signalfd 349
-#    elif __mips__ && _MIPS_SIM == _ABIO32
-#      define __NR_signalfd 4317
-#    elif __mips__ && _MIPS_SIM == _ABI64
-#      define __NR_signalfd 5276
-#    elif __mips__ && _MIPS_SIM == _ABIN32
-#      define __NR_signalfd 6280
-#    endif
-#endif
-
-static inline int signalfd(int fd, const sigset_t *mask, int flags)
-{
-       int retval;
-
-       retval = syscall (__NR_signalfd4, fd, mask, _NSIG / 8, flags);
-       if (errno == ENOSYS && flags == 0)
-               retval = syscall (__NR_signalfd, fd, mask, _NSIG / 8);
-       return retval;
-}
-#endif
-
 static inline int lxc_set_cloexec(int fd)
 {
        return fcntl(fd, F_SETFD, FD_CLOEXEC);