[systemd-commits] configure.ac src/readahead src/shared

Lennart Poettering lennart at kemper.freedesktop.org
Tue Sep 4 15:31:02 PDT 2012


 configure.ac                      |    5 +++++
 src/readahead/readahead-collect.c |    4 ++++
 src/shared/missing.h              |   35 +++++++++++++++++++++++++++++++++++
 src/shared/path-util.c            |    1 +
 4 files changed, 45 insertions(+)

New commits:
commit a8348796c0d39435b1c3d85ce6e95dad1ac85fec
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Sep 4 15:20:04 2012 -0700

    missing: define name_to_handle_at on our own if it is missing

diff --git a/configure.ac b/configure.ac
index 4bafbfb..f1b8838 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 <sys/types.h>
+#include <unistd.h>
+#include <sys/mount.h>]])
+
 # 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 4fcf64c..a3f7df5 100644
--- a/src/readahead/readahead-collect.c
+++ b/src/readahead/readahead-collect.c
@@ -43,6 +43,10 @@
 #include <getopt.h>
 #include <sys/inotify.h>
 
+#ifdef HAVE_FANOTIFY_INIT
+#include <sys/fanotify.h>
+#endif
+
 #include <systemd/sd-daemon.h>
 
 #include "missing.h"
diff --git a/src/shared/missing.h b/src/shared/missing.h
index df3fd0e..7fbb925 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 2bdbd22..4cb0b03 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] == '/';



More information about the systemd-commits mailing list