From: Lennart Poettering Date: Tue, 4 Sep 2012 22:20:04 +0000 (-0700) Subject: missing: define name_to_handle_at on our own if it is missing X-Git-Tag: v190~175 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=a8348796c0d39435b1c3d85ce6e95dad1ac85fec missing: define name_to_handle_at on our own if it is missing --- diff --git a/configure.ac b/configure.ac index 4bafbfb2e..f1b88384f 100644 --- a/configure.ac +++ b/configure.ac @@ -154,6 +154,11 @@ CAP_LIBS="$LIBS" LIBS="$save_LIBS" AC_SUBST(CAP_LIBS) +AC_CHECK_FUNCS([fanotify_init fanotify_mark name_to_handle_at]) +AC_CHECK_DECLS([gettid, pivot_root], [], [], [[#include +#include +#include ]]) + # This makes sure pkg.m4 is available. m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config]) diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c index 4fcf64c24..a3f7df5f6 100644 --- a/src/readahead/readahead-collect.c +++ b/src/readahead/readahead-collect.c @@ -43,6 +43,10 @@ #include #include +#ifdef HAVE_FANOTIFY_INIT +#include +#endif + #include #include "missing.h" diff --git a/src/shared/missing.h b/src/shared/missing.h index df3fd0e83..7fbb9259e 100644 --- a/src/shared/missing.h +++ b/src/shared/missing.h @@ -83,9 +83,11 @@ #define IP_TRANSPARENT 19 #endif +#if !HAVE_DECL_PIVOT_ROOT static inline int pivot_root(const char *new_root, const char *put_old) { return syscall(SYS_pivot_root, new_root, put_old); } +#endif #ifdef __x86_64__ # ifndef __NR_fanotify_init @@ -126,10 +128,13 @@ static inline int pivot_root(const char *new_root, const char *put_old) { # endif #endif +#ifndef HAVE_FANOTIFY_INIT static inline int fanotify_init(unsigned int flags, unsigned int event_f_flags) { return syscall(__NR_fanotify_init, flags, event_f_flags); } +#endif +#ifndef HAVE_FANOTIFY_MARK static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t mask, int dfd, const char *pathname) { #if defined _MIPS_SIM && _MIPS_SIM == _MIPS_SIM_ABI32 || defined __powerpc__ && !defined __powerpc64__ @@ -145,6 +150,7 @@ static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t ma return syscall(__NR_fanotify_mark, fanotify_fd, flags, mask, dfd, pathname); #endif } +#endif #ifndef BTRFS_IOCTL_MAGIC #define BTRFS_IOCTL_MAGIC 0x94 @@ -175,9 +181,11 @@ struct btrfs_ioctl_vol_args { #define MS_PRIVATE (1 << 18) #endif +#if !HAVE_DECL_GETTID static inline pid_t gettid(void) { return (pid_t) syscall(SYS_gettid); } +#endif #ifndef SCM_SECURITY #define SCM_SECURITY 0x03 @@ -194,3 +202,30 @@ static inline pid_t gettid(void) { #ifndef PR_SET_CHILD_SUBREAPER #define PR_SET_CHILD_SUBREAPER 36 #endif + +#ifndef MAX_HANDLE_SZ +#define MAX_HANDLE_SZ 128 +#endif + +#ifdef __x86_64__ +# ifndef __NR_name_to_handle +# define __NR_name_to_handle 303 +# endif +#else +# ifndef __NR_name_to_handle +# define __NR_name_to_handle 341 +# endif +#endif + +#ifndef HAVE_NAME_TO_HANDLE_AT + +struct file_handle { + unsigned int handle_bytes; + int handle_type; + unsigned char f_handle[0]; +}; + +static inline int name_to_handle_at(int fd, const char *name, struct file_handle *handle, int *mnt_id, int flags) { + return syscall(__NR_name_to_handle_at, fd, name, handle, mnt_id, flags); +} +#endif diff --git a/src/shared/path-util.c b/src/shared/path-util.c index 2bdbd22dc..4cb0b03c5 100644 --- a/src/shared/path-util.c +++ b/src/shared/path-util.c @@ -35,6 +35,7 @@ #include "log.h" #include "strv.h" #include "path-util.h" +#include "missing.h" bool path_is_absolute(const char *p) { return p[0] == '/';