build: fix build on non-Linux

A cygwin build of 1.2.9 fails with:

util/virprocess.c:87:27: fatal error: sys/syscall.h: No such file or directory
 #  include <sys/syscall.h>

But in reality, the ONLY user of setns() is lxc, which is Linux-only.
It's easiest to just limit the setns workarounds to Linux.

* src/util/virprocess.c (setns): Limit definition to Linux.

Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Eric Blake 2014-10-01 21:18:52 -06:00
parent adac88c347
commit 4acc03ae8b

View File

@ -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 <sys/syscall.h>
# ifndef HAVE_SETNS
# if defined(__NR_setns)
# include <sys/syscall.h>
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: