summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2012-06-06 09:23:22 +1000
committerAndrew Bartlett <abartlet@samba.org>2012-06-06 08:23:10 +0200
commitd2f6d0ba1e362522438d78374715485daae10919 (patch)
treeab1b8bb9ef8fc845cbb326bd5df18f4965c76f3e
parentbbc1b0c9853322da10483f72c020fe0dd83b28fa (diff)
downloadsamba-d2f6d0ba1e362522438d78374715485daae10919.tar.gz
samba-d2f6d0ba1e362522438d78374715485daae10919.tar.bz2
samba-d2f6d0ba1e362522438d78374715485daae10919.zip
build: Rationalise AIO support in configure, ensure on by default
With this change, the define to check for AIO is HAVE_AIO, consistant with other subsystems. It is now also on by default in the autoconf build, as it has been for waf. Andrew Bartlett
-rw-r--r--source3/configure.in38
-rw-r--r--source3/include/includes.h4
-rw-r--r--source3/lib/system.c6
-rw-r--r--source3/smbd/aio.c2
-rw-r--r--source3/smbd/globals.c2
-rw-r--r--source3/smbd/globals.h2
-rwxr-xr-xsource3/wscript2
7 files changed, 26 insertions, 30 deletions
diff --git a/source3/configure.in b/source3/configure.in
index 7a9f03a8c5..a11e96b107 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -5339,15 +5339,21 @@ esac
#################################################
# check for AIO support
+with_aio=auto
AC_MSG_CHECKING(whether to support asynchronous io)
AC_ARG_WITH(aio-support,
-[AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
-[ case "$withval" in
- yes)
+[AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=auto)])],
+[ case "$withval" in
+ yes|no)
+ with_aio=$withval
+ ;;
+ esac ])
- AC_MSG_RESULT(yes)
- case "$host_os" in
- *)
+AC_MSG_RESULT($with_aio)
+
+if test x"$with_aio" = x"no"; then
+ AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
+else
AIO_LIBS=$LIBS
no_rt_LIBS=$LIBS
AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
@@ -5362,7 +5368,7 @@ AC_ARG_WITH(aio-support,
samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
LIBS=$aio_LIBS])
if test x"$samba_cv_HAVE_AIO" = x"yes"; then
- AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
+ AC_DEFINE(HAVE_AIO, 1, [Using asynchronous io])
LIBS=$AIO_LIBS
AC_MSG_CHECKING(for aio_read)
AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
@@ -5405,19 +5411,11 @@ int main() { struct aiocb a; return aio_cancel(1, &a); }])],
int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }])],
[AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)])
+ else
+ AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
+ AC_MSG_RESULT(no)
fi
-
- ;;
- esac
- ;;
- *)
- AC_MSG_RESULT(no)
- AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
- ;;
- esac ],
- AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
- AC_MSG_RESULT(no)
-)
+fi
if test x"$samba_cv_HAVE_AIO" = x"yes"; then
if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
@@ -5455,7 +5453,7 @@ io_getevents(ctx, 1, 1, &ioev, &ts);],
samba_cv_HAVE_LINUX_KERNEL_AIO=yes,samba_cv_HAVE_LINUX_KERNEL_AIO=no)
LIBS=$aio_LIBS])
if test x"$samba_cv_HAVE_LINUX_KERNEL_AIO" = x"yes"; then
- AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
+ AC_DEFINE(HAVE_AIO, 1, [Using asynchronous io])
default_shared_modules="$default_shared_modules vfs_aio_linux"
fi
;;
diff --git a/source3/include/includes.h b/source3/include/includes.h
index f25d1c2fcf..cb60dd2152 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -149,7 +149,7 @@
#include <netgroup.h>
#endif
-#if defined(HAVE_AIO_H) && defined(WITH_AIO)
+#if defined(HAVE_AIO_H) && defined(HAVE_AIO)
#include <aio.h>
#endif
@@ -343,7 +343,7 @@ typedef struct stat_ex SMB_STRUCT_STAT;
*/
#ifndef SMB_STRUCT_AIOCB
-# if defined(WITH_AIO)
+# if defined(HAVE_AIO)
# define SMB_STRUCT_AIOCB struct aiocb
# else
# define SMB_STRUCT_AIOCB int /* AIO not being used but we still need the define.... */
diff --git a/source3/lib/system.c b/source3/lib/system.c
index 8c1ae94e19..92596a8d72 100644
--- a/source3/lib/system.c
+++ b/source3/lib/system.c
@@ -1365,7 +1365,7 @@ int sys_get_number_of_cores(void)
}
#endif
-#if defined(WITH_AIO)
+#if defined(HAVE_AIO)
/*******************************************************************
An aio_read wrapper.
@@ -1464,7 +1464,7 @@ int sys_aio_suspend(const SMB_STRUCT_AIOCB * const cblist[], int n, const struct
return -1;
#endif
}
-#else /* !WITH_AIO */
+#else /* !HAVE_AIO */
int sys_aio_read(SMB_STRUCT_AIOCB *aiocb)
{
@@ -1507,4 +1507,4 @@ int sys_aio_suspend(const SMB_STRUCT_AIOCB * const cblist[], int n, const struct
errno = ENOSYS;
return -1;
}
-#endif /* WITH_AIO */
+#endif /* HAVE_AIO */
diff --git a/source3/smbd/aio.c b/source3/smbd/aio.c
index aa8aee00fb..131094de36 100644
--- a/source3/smbd/aio.c
+++ b/source3/smbd/aio.c
@@ -23,7 +23,7 @@
#include "smbd/globals.h"
#include "../lib/util/tevent_ntstatus.h"
-#if defined(WITH_AIO)
+#if defined(HAVE_AIO)
/* The signal we'll use to signify aio done. */
#ifndef RT_SIGNAL_AIO
diff --git a/source3/smbd/globals.c b/source3/smbd/globals.c
index f107c0e661..7c4ffec099 100644
--- a/source3/smbd/globals.c
+++ b/source3/smbd/globals.c
@@ -25,7 +25,7 @@
#include "messages.h"
#include "tdb_compat.h"
-#if defined(WITH_AIO)
+#if defined(HAVE_AIO)
struct aio_extra *aio_list_head = NULL;
struct tevent_signal *aio_signal_event = NULL;
int aio_pending_size = 0;
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h
index ccf79fe5ff..2c0056660f 100644
--- a/source3/smbd/globals.h
+++ b/source3/smbd/globals.h
@@ -20,7 +20,7 @@
#include "system/select.h"
-#if defined(WITH_AIO)
+#if defined(HAVE_AIO)
struct aio_extra;
extern struct aio_extra *aio_list_head;
extern struct tevent_signal *aio_signal_event;
diff --git a/source3/wscript b/source3/wscript
index 9d8264ca87..ccedb6947f 100755
--- a/source3/wscript
+++ b/source3/wscript
@@ -362,8 +362,6 @@ return acl_get_perm_np(permset_d, perm);
headers='sys/types.h aio.h',
lib='aio rt')
if conf.CONFIG_SET('HAVE_AIO'):
- conf.DEFINE('WITH_AIO', '1')
- if conf.CONFIG_SET('HAVE_AIO'):
conf.CHECK_CODE('struct aiocb a; return aio_read(&a);', 'HAVE_AIO_READ', msg='Checking for aio_read', headers='aio.h', lib='aio rt')
conf.CHECK_CODE('struct aiocb a; return aio_write(&a);', 'HAVE_AIO_WRITE', msg='Checking for aio_write', headers='aio.h', lib='aio rt')
conf.CHECK_CODE('struct aiocb a; return aio_fsync(1, &a);', 'HAVE_AIO_FSYNC', msg='Checking for aio_fsync', headers='aio.h', lib='aio rt')