From 735a15a6b57e240b13019d1bce75984852540121 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Mon, 15 Sep 2014 15:31:40 +0200 Subject: [PATCH] virprocess: Extend list of platforms for setns wrapper Currently, the setns() wrapper is supported only for x86_64 and i686 which leaves us failing to build on other platforms like arm, aarch64 and so on. This means, that the wrapper needs to be extended to those platforms and make to fail on runtime not compile time. The syscall numbers for other platforms was fetched using this command: kernel.git $ git grep "define.*__NR_setns" | grep -e arm -e powerpc -e s390 arch/arm/include/uapi/asm/unistd.h:#define __NR_setns (__NR_SYSCALL_BASE+375) arch/arm64/include/asm/unistd32.h:#define __NR_setns 375 arch/powerpc/include/uapi/asm/unistd.h:#define __NR_setns 350 arch/s390/include/uapi/asm/unistd.h:#define __NR_setns 339 Signed-off-by: Michal Privoznik --- src/util/virprocess.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/util/virprocess.c b/src/util/virprocess.c index 3dae1bdf1f..806e7f98da 100644 --- a/src/util/virprocess.c +++ b/src/util/virprocess.c @@ -71,27 +71,33 @@ VIR_LOG_INIT("util.process"); # define __NR_setns 308 # elif defined(__i386__) # define __NR_setns 346 -# else -# error "__NR_setns is not defined" +# elif defined(__arm__) +# define __NR_setns 375 +# elif defined(__aarch64__) +# define __NR_setns 375 +# elif defined(__powerpc__) +# define __NR_setns 350 +# elif defined(__s390__) +# define __NR_setns 339 # endif #endif #ifndef HAVE_SETNS -# ifndef WIN32 +# if defined(__NR_setns) && !defined(WIN32) # include static inline int setns(int fd, int nstype) { return syscall(__NR_setns, fd, nstype); } -# else +# else /* __NR_setns && !WIN32 */ static inline int setns(int fd ATTRIBUTE_UNUSED, int nstype ATTRIBUTE_UNUSED) { virReportSystemError(ENOSYS, "%s", - _("Namespaces are not supported on windows.")); + _("Namespaces are not supported on this platform.")); return -1; } -# endif /* WIN32 */ +# endif /* __NR_setns && !WIN32 */ #endif /* HAVE_SETNS */ /** -- 2.47.2