mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-23 13:05:27 +00:00
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:
parent
adac88c347
commit
4acc03ae8b
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user