diff --git a/src/util/virprocess.c b/src/util/virprocess.c index 806e7f98da..486123a292 100644 --- a/src/util/virprocess.c +++ b/src/util/virprocess.c @@ -61,44 +61,48 @@ VIR_LOG_INIT("util.process"); +#ifdef __linux__ /* * Workaround older glibc. While kernel may support the setns * syscall, the glibc wrapper might not exist. If that's the * case, use our own. */ -#ifndef __NR_setns -# if defined(__x86_64__) -# define __NR_setns 308 -# elif defined(__i386__) -# define __NR_setns 346 -# 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 +# ifndef __NR_setns +# if defined(__x86_64__) +# define __NR_setns 308 +# elif defined(__i386__) +# define __NR_setns 346 +# 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 -#endif -#ifndef HAVE_SETNS -# if defined(__NR_setns) && !defined(WIN32) -# include +# ifndef HAVE_SETNS +# if defined(__NR_setns) +# include static inline int setns(int fd, int nstype) { return syscall(__NR_setns, fd, nstype); } -# else /* __NR_setns && !WIN32 */ +# else /* !__NR_setns */ +# error Please determine the syscall number for setns on your architecture +# endif +# endif +#else /* !__linux__ */ static inline int setns(int fd ATTRIBUTE_UNUSED, int nstype ATTRIBUTE_UNUSED) { virReportSystemError(ENOSYS, "%s", _("Namespaces are not supported on this platform.")); return -1; } -# endif /* __NR_setns && !WIN32 */ -#endif /* HAVE_SETNS */ +#endif /** * virProcessTranslateStatus: