mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
build-sys: Add setns() functions if not in the C library.
Debian Stable is still using glibc 2.13, which doesn't provide the setns(). So we detect this and provide a tiny wrapper that issues the setns syscall towards the kernel.
This commit is contained in:
parent
d9d93745cd
commit
3b79431414
Notes:
Zbigniew Jędrzejewski-Szmek
2014-02-27 19:00:13 -05:00
Backport: bugfix
@ -241,10 +241,11 @@ LIBS="$save_LIBS"
|
||||
|
||||
AC_CHECK_FUNCS([fanotify_init fanotify_mark])
|
||||
AC_CHECK_FUNCS([__secure_getenv secure_getenv])
|
||||
AC_CHECK_DECLS([gettid, pivot_root, name_to_handle_at], [], [], [[#include <sys/types.h>
|
||||
AC_CHECK_DECLS([gettid, pivot_root, name_to_handle_at, setns], [], [], [[#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/mount.h>
|
||||
#include <fcntl.h>]])
|
||||
#include <fcntl.h>
|
||||
#include <sched.h>]])
|
||||
|
||||
# This makes sure pkg.m4 is available.
|
||||
m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <linux/oom.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/if_link.h>
|
||||
@ -353,3 +354,19 @@ static inline int name_to_handle_at(int fd, const char *name, struct file_handle
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef __NR_setns
|
||||
# if defined(__x86_64__)
|
||||
# define __NR_setns 308
|
||||
# elif defined(__i386__)
|
||||
# define __NR_setns 346
|
||||
# else
|
||||
# error "__NR_setns is not defined"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !HAVE_DECL_SETNS
|
||||
static inline int setns(int fd, int nstype) {
|
||||
return syscall(__NR_setns, fd, nstype);
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user