efl: simplify inotify by moving it to common.

also deprecate very ancient inotify usage by direct syscall.



SVN revision: 80292
This commit is contained in:
Gustavo Sverzut Barbieri 2012-12-06 00:57:29 +00:00
parent 5575c36c4e
commit 9d93fc18da
4 changed files with 24 additions and 107 deletions

View File

@ -104,6 +104,8 @@ AC_ARG_ENABLE([coverage],
#### Default values
want_inotify="no"
requirements_pc_crypto=""
requirements_pc_deps_crypto=""
requirements_libs_crypto=""
@ -277,6 +279,11 @@ case "$host_os" in
MODULE_ARCH="$host_os-$host_cpu-v_maj.v_min.v_mic"
MODULE_EXT=".dll"
;;
linux*)
want_inotify="yes"
MODULE_ARCH="$host_os-$host_cpu-v_maj.v_min.v_mic"
MODULE_EXT=".so"
;;
*)
MODULE_ARCH="$host_os-$host_cpu-v_maj.v_min.v_mic"
MODULE_EXT=".so"
@ -474,6 +481,17 @@ sys/mman.h \
unistd.h \
])
have_inotify="no"
if test "x${want_inotify}" = "xyes" ; then
AC_CHECK_HEADER([sys/inotify.h],
[
AC_DEFINE([HAVE_INOTIFY], [1], [File monitoring with Inotify])
have_inotify="yes"
],
[have_inotify="no"])
fi
AM_CONDITIONAL([HAVE_INOTIFY], [test "x${have_inotify}" = "xyes"])
EFL_CHECK_PATH_MAX
@ -1825,19 +1843,13 @@ fi
# cserve2 only works on Linux so far.
if test "x${efl_func_shm_open}" = "xno" ; then
if test "x${efl_func_shm_open}" = "xno" -o "x${have_inotify}" = "xno"; then
want_evas_cserve2="no"
fi
if test "x${want_evas_cserve2}" = "xyes" ; then
AC_CHECK_HEADERS([sys/epoll.h sys/inotify.h sys/signalfd.h],
[],
[want_evas_cserve2="no"])
fi
if test "x${want_evas_cserve2}" = "xyes" ; then
AC_DEFINE([EVAS_CSERVE2], [1], [Shared cache server.])
fi
AC_DEFINE_IF([EVAS_CSERVE2],
[test "x${want_evas_cserve2}" = "xyes"],
[1], [Shared cache server.])
AM_CONDITIONAL([EVAS_CSERVE2], [test "x${want_evas_cserve2}" = "xyes"])
### Configuration
@ -2368,18 +2380,6 @@ AC_ARG_ENABLE([poll],
],
[want_poll="yes"])
AC_ARG_ENABLE([inotify],
[AC_HELP_STRING([--disable-inotify],
[disable inotify in the ecore_file module. @<:@default=enabled@:>@])],
[
if test "x${enableval}" = "xyes" ; then
want_inotify="yes"
else
want_inotify="no"
fi
],
[want_inotify="yes"])
AC_ARG_ENABLE([atfile-source],
[AC_HELP_STRING([--disable-atfile-source],
[disable use of atfile source functions as openat and mkdirat @<:@default=detect@:>@])],
@ -2440,19 +2440,6 @@ requirements_pc_ecore_file="ecore-con >= ${PACKAGE_VERSION} ecore >= ${PACKAGE_V
### Checks for header files
have_inotify="no"
if test "x${want_inotify}" = "xyes" ; then
AC_CHECK_HEADER([sys/inotify.h],
[
AC_DEFINE([HAVE_INOTIFY], [1], [File monitoring with Inotify])
have_inotify="yes"
],
[have_inotify="no"])
fi
AC_MSG_CHECKING([whether inotify is to be used for filemonitoring])
AC_MSG_RESULT(${have_inotify})
### Checks for types
### Checks for structures
@ -3954,12 +3941,9 @@ setxattr("/", "user.ethumb.md5", NULL, 0, 0);
AC_MSG_RESULT([${have_xattr}])
# Check for inotify specificity
have_inotify="no"
have_notify_win32="no"
EIO_CHECK_INOTIFY([have_inotify="yes"], [have_inotify="no"])
EIO_CHECK_NOTIFY_WIN32([have_notify_win32="yes"], [have_notify_win32="no"])
AM_CONDITIONAL([EIO_HAVE_INOTIFY], [test "x${have_inotify}" = "xyes"])
AM_CONDITIONAL([EIO_HAVE_WINCHANGE], [test "x${have_notify_win32}" = "xyes"])
#### End of Eio

View File

@ -1,47 +1,3 @@
dnl use: EIO_CHECK_INOTIFY([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
AC_DEFUN([EIO_CHECK_INOTIFY],
[
_eio_have_inotify="no"
dnl We need to check if the right inotify version is accessible
dnl It is hard to find a good test on how to check the correct
dnl inotify version. They changed the headers a lot.
dnl in kernel 2.6.13 __NR_inotify_init was added to the defined syscalls
dnl in asm/unistd.h and IN_MOVE_SELF was added to linux/inotify.h
dnl so with this check you need a very new kernel and kernel-headers!
if ! test "x${have_windows}" = "xyes" ; then
AC_CHECK_LIB([c], [inotify_init],
[
AC_DEFINE([HAVE_INOTIFY], [1], [ File monitoring with Inotify ])
AC_DEFINE([HAVE_SYS_INOTIFY], [1], [ File monitoring with Inotify - sys/inotify.h ])
_eio_have_inotify="yes"
],
[
AC_TRY_COMPILE(
[
#include <asm/unistd.h>
#include <linux/inotify.h>
],
[
int a = __NR_inotify_init; int b = IN_MOVE_SELF;
],
[
AC_DEFINE([HAVE_INOTIFY], [1], [ File monitoring with Inotify ])
_eio_have_inotify="yes"
],
[_eio_have_inotify="no"])
])
fi
AC_MSG_CHECKING([whether inotify is to be used for filemonitoring])
AC_MSG_RESULT([${_eio_have_inotify}])
AS_IF([test "x${_eio_have_inotify}" = "xyes"], [$1], [$2])
])
dnl use: EIO_CHECK_NOTIFY_WIN32([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
AC_DEFUN([EIO_CHECK_NOTIFY_WIN32],
[

View File

@ -18,7 +18,7 @@ lib/eio/eio_single.c \
lib/eio/eio_xattr.c \
lib/eio/eio_private.h
if EIO_HAVE_INOTIFY
if HAVE_INOTIFY
lib_eio_libeio_la_SOURCES += lib/eio/eio_monitor_inotify.c
else
if EIO_HAVE_WINCHANGE

View File

@ -20,11 +20,8 @@
#include "eio_private.h"
#include "Eio.h"
#ifdef HAVE_SYS_INOTIFY
#ifdef HAVE_INOTIFY
# include <sys/inotify.h>
#else
# include <asm/unistd.h>
# include <linux/inotify.h>
#endif
/*============================================================================*
@ -70,26 +67,6 @@ static const Eio_Inotify_Table match[] = {
EIO_INOTIFY_LINE(IN_UNMOUNT, SELF_DELETED, SELF_DELETED)
};
#ifndef HAVE_SYS_INOTIFY
static inline int
inotify_init(void)
{
return syscall(__NR_inotify_init);
}
static inline int
inotify_add_watch(int fd, const char *name, __u32 mask)
{
return syscall(__NR_inotify_add_watch, fd, name, mask);
}
static inline int
inotify_rm_watch(int fd, __u32 wd)
{
return syscall(__NR_inotify_rm_watch, fd, wd);
}
#endif
static void
_eio_inotify_del(void *data)
{