dnl Some autoconf.h defines we might enable later...
AC_ARG_WITH(pthreads,AS_HELP_STRING([--without-pthreads],[Disable POSIX Threads]))
AC_ARG_WITH(aio, AS_HELP_STRING([--without-aio],[Do not use POSIX AIO. Default: auto-detect]))
-AH_TEMPLATE(USE_DISKIO_AIO, [Whether POSIX AIO support is needed. Automatic])
-AH_TEMPLATE(USE_DISKIO_DISKTHREADS, [Whether pthreads support is needed. Automatic])
ENABLE_WIN32_AIOPS=0
squid_opt_use_aio=
squid_opt_use_diskthreads=
dnl Setup the module paths etc.
DISK_LIBS=
-DISK_OS_LIBS=
DISK_MODULES=
DISK_LINKOBJS=
+AH_TEMPLATE(HAVE_DISKIO_MODULE_AIO, [Whether POSIX AIO Disk I/O module is built])
+AH_TEMPLATE(HAVE_DISKIO_MODULE_BLOCKING, [Whether Blocking Disk I/O module is built])
+AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKDAEMON, [Whether DiskDaemon Disk I/O module is built])
+AH_TEMPLATE(HAVE_DISKIO_MODULE_IPCIO, [Whether IpcIo Disk I/O module is built])
+AH_TEMPLATE(HAVE_DISKIO_MODULE_MMAPPED, [Whether Mmapped Disk I/O module is built])
for module in $squid_disk_module_candidates none; do
# maybe not needed
if test "x$module" = "xnone"; then
AC_MSG_ERROR(disk-io $module does not exist)
fi
case "$module" in
+
+ AIO)
+ dnl Check for POSIX AIO availability
+ squid_opt_use_aio="yes"
+ AIOLIB=
+ if test "x$with_aio" != "xno"; then
+ have_aio_header=no
+ AC_CHECK_HEADERS(aio.h,[have_aio_header=yes])
+ dnl On some systems POSIX AIO functions are in librt
+ dnl On some systems POSIX AIO functions are in libaio
+ AC_CHECK_LIB(rt,aio_read,[AIOLIB="-lrt"],AC_CHECK_LIB(aio,aio_read,[AIOLIB="-laio"],[]))
+ dnl Enable AIO if the library and headers are found
+ if test "x$AIOLIB" != "x" && test "x$have_aio_header" = "xyes"; then
+ AC_MSG_NOTICE([Native POSIX AIO support detected.])
+ squid_opt_use_aio="yes"
+ else
+ dnl Windows does things differently. We provide wrappers.
+ dnl TODO: Windows really needs its own DiskIO module or its Overlaped IO
+ case "$squid_host_os" in
+ mingw)
+ squid_opt_use_aio="yes"
+ AC_MSG_NOTICE([Windows being built. Maybe-enable POSIX AIO.])
+ ;;
+ *)
+ AC_MSG_NOTICE([Native POSIX AIO support not detected. AIO automatically disabled.])
+ squid_opt_use_aio="no"
+ ;;
+ esac
+ fi
+ else
+ AC_MSG_NOTICE([POSIX AIO support manually disabled.])
+ squid_opt_use_aio="no"
+ fi
+ dnl Use the POSIX AIO pieces if we actually need them.
+ if test "x$squid_opt_use_aio" = "xyes" ; then
+ DISK_MODULES="$DISK_MODULES AIO"
+ DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/AIO/AIODiskIOModule.o"
+ AC_DEFINE([HAVE_DISKIO_MODULE_AIO],1,[POSIX AIO Disk I/O module is built])
+ case "$squid_host_os" in
+ mingw)
+ ENABLE_WIN32_AIO=1
+ AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
+ ;;
+ *)
+ AC_MSG_NOTICE([Enabling AIO DiskIO module])
+ ;;
+ esac
+ else
+ AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
+ fi
+ ;;
+
+ Blocking)
+ AC_MSG_NOTICE([Enabling Blocking DiskIO module])
+ DISK_MODULES="$DISK_MODULES Blocking"
+ DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/Blocking/BlockingDiskIOModule.o"
+ AC_DEFINE([HAVE_DISKIO_MODULE_BLOCKING],1,[Blocking Disk I/O module is built])
+ ;;
+
DiskDaemon)
case "$squid_host_os" in
mingw)
;;
*)
AC_MSG_NOTICE([Enabling DiskDaemon DiskIO module])
- DISK_LIBS="$DISK_LIBS libDiskDaemon.a"
DISK_MODULES="$DISK_MODULES DiskDaemon"
- DISK_PROGRAMS="$DISK_PROGRAMS DiskIO/DiskDaemon/diskd"
DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/DiskDaemon/DiskDaemonDiskIOModule.o"
+ AC_DEFINE([HAVE_DISKIO_MODULE_DISKDAEMON],1,[DiskDaemon Disk I/O module is built])
;;
esac
;;
+
DiskThreads)
squid_opt_use_diskthreads="yes"
LIBPTHREADS=
squid_opt_use_diskthreads="no"
fi
if test "x$squid_opt_use_diskthreads" = "xyes" ; then
- AC_DEFINE(USE_DISKIO_DISKTHREADS, 1, [Whether pthreads support is needed. Automatic])
AC_MSG_NOTICE([Enabling DiskThreads DiskIO module])
- DISK_LIBS="$DISK_LIBS libDiskThreads.a"
- DISK_OS_LIBS="$DISK_OS_LIBS $LIBPTHREADS"
DISK_MODULES="$DISK_MODULES DiskThreads"
DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/DiskThreads/DiskThreadsDiskIOModule.o"
+ AC_DEFINE([HAVE_DISKIO_MODULE_DISKTHREADS],1,[DiskThreads Disk I/O module is built])
else
- AC_DEFINE(USE_DISKIO_DISKTHREADS, 0, [Whether pthreads support is needed. Automatic])
AC_MSG_NOTICE([Native pthreads support disabled. DiskThreads module automaticaly disabled.])
SQUID_STATE_ROLLBACK([diskthreads_state])
fi
;;
- AIO)
- dnl Check for POSIX AIO availability
- squid_opt_use_aio="yes"
- AIOLIB=
- if test "x$with_aio" != "xno"; then
- have_aio_header=no
- AC_CHECK_HEADERS(aio.h,[have_aio_header=yes])
- dnl On some systems POSIX AIO functions are in librt
- dnl On some systems POSIX AIO functions are in libaio
- AC_CHECK_LIB(rt,aio_read,[AIOLIB="-lrt"],AC_CHECK_LIB(aio,aio_read,[AIOLIB="-laio"],[]))
- dnl Enable AIO if the library and headers are found
- if test "x$AIOLIB" != "x" && test "x$have_aio_header" = "xyes"; then
- AC_MSG_NOTICE([Native POSIX AIO support detected.])
- squid_opt_use_aio="yes"
- else
- dnl Windows does things differently. We provide wrappers.
- dnl TODO: Windows really needs its own DiskIO module or its Overlaped IO
- case "$squid_host_os" in
- mingw)
- squid_opt_use_aio="yes"
- AC_MSG_NOTICE([Windows being built. Maybe-enable POSIX AIO.])
- ;;
- *)
- AC_MSG_NOTICE([Native POSIX AIO support not detected. AIO automatically disabled.])
- squid_opt_use_aio="no"
- ;;
- esac
- fi
- else
- AC_MSG_NOTICE([POSIX AIO support manually disabled.])
- squid_opt_use_aio="no"
- fi
- dnl Use the POSIX AIO pieces if we actually need them.
- if test "x$squid_opt_use_aio" = "xyes" ; then
- AC_DEFINE(USE_DISKIO_AIO, 1, [Whether POSIX AIO support is needed. Automatic])
- DISK_MODULES="$DISK_MODULES AIO"
- DISK_LIBS="$DISK_LIBS libAIO.a"
- DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/AIO/AIODiskIOModule.o"
- case "$squid_host_os" in
- mingw)
- ENABLE_WIN32_AIO=1
- AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
- ;;
- *)
- AC_MSG_NOTICE([Enabling AIO DiskIO module])
- DISK_OS_LIBS="$DISK_OS_LIBS $AIOLIB"
- ;;
- esac
- else
- AC_DEFINE(USE_DISKIO_AIO, 0, [Whether POSIX AIO support is needed. Automatic])
- AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
+ IpcIo)
+ AC_MSG_NOTICE([Enabling IpcIo DiskIO module])
+ if test "x$ac_cv_search_shm_open" = "xno" ; then
+ AC_MSG_ERROR([DiskIO IpcIo module requires shared memory support])
fi
+ DISK_MODULES="$DISK_MODULES IpcIo"
+ DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/IpcIo/IpcIoDiskIOModule.o"
+ AC_DEFINE([HAVE_DISKIO_MODULE_IPCIO],1,[IpcIo Disk I/O module is built])
;;
Mmapped)
AC_MSG_NOTICE([Mmapped DiskIO is not available on Mingw])
else
AC_MSG_NOTICE([Enabling Mmapped DiskIO module])
- DISK_LIBS="$DISK_LIBS libMmapped.a"
DISK_MODULES="$DISK_MODULES Mmapped"
DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/Mmapped/MmappedDiskIOModule.o"
+ AC_DEFINE([HAVE_DISKIO_MODULE_MMAPPED],1,[Mmapped Disk I/O module is built])
fi
;;
- IpcIo)
- AC_MSG_NOTICE([Enabling IpcIo DiskIO module])
- if test "x$ac_cv_search_shm_open" = "xno" ; then
- AC_MSG_ERROR([DiskIO IpcIo module requires shared memory support])
- fi
- DISK_LIBS="$DISK_LIBS libIpcIo.a"
- DISK_MODULES="$DISK_MODULES IpcIo"
- DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/IpcIo/IpcIoDiskIOModule.o"
- AC_DEFINE(USE_DISKIO_IPCIO, 1, [Enable DiskIO IpcIo module.])
- ;;
-
- Blocking)
- AC_MSG_NOTICE([Enabling Blocking DiskIO module])
- DISK_LIBS="$DISK_LIBS libBlocking.a"
- DISK_MODULES="$DISK_MODULES Blocking"
- DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/Blocking/BlockingDiskIOModule.o"
- ;;
-
*)
AC_MSG_NOTICE([Enabling $module DiskIO module])
- DISK_LIBS="$DISK_LIBS lib${module}.a"
+ DISK_LIBS="$DISK_LIBS lib${module}.la"
DISK_MODULES="$DISK_MODULES ${module}"
DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/${module}/${module}DiskIOModule.o"
;;
AC_MSG_NOTICE([IO Modules built: $DISK_MODULES])
AC_SUBST(DISK_MODULES)
AC_SUBST(DISK_LIBS)
-AC_SUBST(DISK_PROGRAMS)
AC_SUBST(DISK_LINKOBJS)
-AC_SUBST(DISK_OS_LIBS)
-AM_CONDITIONAL([ENABLE_WIN32_AIOPS], [test "$ENABLE_WIN32_AIOPS" = "1"])
-AM_CONDITIONAL([ENABLE_WIN32_AIO], [test "$ENABLE_WIN32_AIO" = "1"])
+AM_CONDITIONAL([ENABLE_DISKIO_AIO], [test "x$squid_disk_module_candidates_AIO" != "xno"])
+AC_SUBST(AIOLIB)
+AM_CONDITIONAL([ENABLE_WIN32_AIO], [test "x$squid_disk_module_candidates_AIO" != "xno" -a "x$ENABLE_WIN32_AIO" = "x1"])
+AM_CONDITIONAL([ENABLE_DISKIO_BLOCKING], [test "x$squid_disk_module_candidates_Blocking" != "xno"])
+AM_CONDITIONAL([ENABLE_DISKIO_DISKDAEMON], [test "x$squid_disk_module_candidates_DiskDaemon" != "xno"])
+AM_CONDITIONAL([ENABLE_DISKIO_DISKTHREADS], [test "x$squid_disk_module_candidates_DiskThreads" != "xno"])
+AC_SUBST(LIBPTHREADS)
+AM_CONDITIONAL([ENABLE_WIN32_AIOPS], [test "x$squid_disk_module_candidates_DiskThreads" != "xno" -a "x$ENABLE_WIN32_AIOPS" = "x1"])
+AM_CONDITIONAL([ENABLE_DISKIO_IPCIO], [test "x$squid_disk_module_candidates_IpcIo" != "xno"])
+AM_CONDITIONAL([ENABLE_DISKIO_MMAPPED], [test "x$squid_disk_module_candidates_Mmapped" != "xno"])
dnl Check what Storage formats are wanted.
src/comm/Makefile
src/dns/Makefile
src/DiskIO/Makefile
+ src/DiskIO/AIO/Makefile
+ src/DiskIO/Blocking/Makefile
+ src/DiskIO/DiskDaemon/Makefile
+ src/DiskIO/DiskThreads/Makefile
+ src/DiskIO/IpcIo/Makefile
+ src/DiskIO/Mmapped/Makefile
src/esi/Makefile
src/eui/Makefile
src/format/Makefile
*/
#include "squid.h"
-#include "AIODiskFile.h"
-#include "AIODiskIOStrategy.h"
+#include "Debug.h"
#include "disk.h"
+#include "DiskIO/AIO/AIODiskFile.h"
+#include "DiskIO/AIO/AIODiskIOStrategy.h"
#include "DiskIO/IORequestor.h"
#include "DiskIO/ReadRequest.h"
#include "DiskIO/WriteRequest.h"
#ifndef SQUID_AIODISKFILE_H
#define SQUID_AIODISKFILE_H
-#if USE_DISKIO_AIO
+#if HAVE_DISKIO_MODULE_AIO
-#include "async_io.h"
#include "cbdata.h"
+#include "DiskIO/AIO/async_io.h"
#include "DiskIO/DiskFile.h"
#include "SquidString.h"
bool error_;
};
-#endif /* USE_DISKIO_AIO */
+#endif /* HAVE_DISKIO_MODULE_AIO */
#endif /* SQUID_AIODISKFILE_H */
*/
#include "squid.h"
-#include "AIODiskIOModule.h"
-#include "AIODiskIOStrategy.h"
+#include "DiskIO/AIO/AIODiskIOModule.h"
+#include "DiskIO/AIO/AIODiskIOStrategy.h"
#include "Store.h"
AIODiskIOModule::AIODiskIOModule()
#ifndef SQUID_AIODISKIOMODULE_H
#define SQUID_AIODISKIOMODULE_H
-#if USE_DISKIO_AIO
+#if HAVE_DISKIO_MODULE_AIO
#include "DiskIO/DiskIOModule.h"
static AIODiskIOModule Instance;
};
-#endif /* USE_DISKIO_AIO */
+#endif /* HAVE_DISKIO_MODULE_AIO */
#endif /* SQUID_AIODISKIOMODULE_H */
*/
#include "squid.h"
-#include "AIODiskFile.h"
-#include "AIODiskIOStrategy.h"
+#include "DiskIO/AIO/AIODiskFile.h"
+#include "DiskIO/AIO/AIODiskIOStrategy.h"
#include "DiskIO/IORequestor.h"
#include "DiskIO/ReadRequest.h"
#include "DiskIO/WriteRequest.h"
* Please see the COPYING and CONTRIBUTORS files for details.
*/
-#ifndef SQUID_AIODISKIOSTRATEGY_H
-#define SQUID_AIODISKIOSTRATEGY_H
+#ifndef SQUID_SRC_DISKIO_AIO_AIODISKIOSTRATEGY_H
+#define SQUID_SRC_DISKIO_AIO_AIODISKIOSTRATEGY_H
-#if USE_DISKIO_AIO
+#if HAVE_DISKIO_MODULE_AIO
-#include "async_io.h"
+#include "DiskIO/AIO/async_io.h"
#include "DiskIO/DiskIOStrategy.h"
class AIODiskIOStrategy : public DiskIOStrategy
int findSlot();
};
-#endif /* USE_DISKIO_AIO */
-#endif /* SQUID_AIODISKIOSTRATEGY_H */
+#endif /* HAVE_DISKIO_MODULE_AIO */
+#endif /* SQUID_SRC_DISKIO_AIO_AIODISKIOSTRATEGY_H */
--- /dev/null
+## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
+##
+## Squid software is distributed under GPLv2+ license and includes
+## contributions from numerous individuals and organizations.
+## Please see the COPYING and CONTRIBUTORS files for details.
+##
+
+include $(top_srcdir)/src/Common.am
+include $(top_srcdir)/src/TestHeaders.am
+
+noinst_LTLIBRARIES = libAIO.la
+
+libAIO_la_SOURCES = \
+ async_io.h \
+ AIODiskFile.cc \
+ AIODiskFile.h \
+ AIODiskIOModule.cc \
+ AIODiskIOModule.h \
+ AIODiskIOStrategy.cc \
+ AIODiskIOStrategy.h
+
+if ENABLE_WIN32_AIO
+libAIO_la_SOURCES += \
+ aio_win32.cc \
+ aio_win32.h
+else
+EXTRA_DIST = \
+ aio_win32.cc \
+ aio_win32.h
+endif
+
#ifndef __WIN32_AIO_H__
#define __WIN32_AIO_H__
-#if USE_DISKIO_AIO
+#if HAVE_DISKIO_MODULE_AIO
#ifndef off64_t
typedef int64_t off64_t;
void aio_close(int);
#endif /* _SQUID_WINDOWS_ */
-#endif /* USE_DISKIO_AIO */
+#endif /* HAVE_DISKIO_MODULE_AIO */
#endif /* __WIN32_AIO_H__ */
#ifndef __ASYNC_IO_H__
#define __ASYNC_IO_H__
-#if USE_DISKIO_AIO
+#if HAVE_DISKIO_MODULE_AIO
#if _SQUID_WINDOWS_
-#include "aio_win32.h"
+#include "DiskIO/AIO/aio_win32.h"
#else
#if HAVE_AIO_H
#include <aio.h>
int aq_numpending; /* Num of pending ops */
};
-#endif /* USE_DISKIO_AIO */
+#endif /* HAVE_DISKIO_MODULE_AIO */
#endif /* __ASYNC_IO_H_ */
--- /dev/null
+## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
+##
+## Squid software is distributed under GPLv2+ license and includes
+## contributions from numerous individuals and organizations.
+## Please see the COPYING and CONTRIBUTORS files for details.
+##
+
+include $(top_srcdir)/src/Common.am
+include $(top_srcdir)/src/TestHeaders.am
+
+noinst_LTLIBRARIES = libBlocking.la
+
+libBlocking_la_SOURCES = \
+ BlockingDiskIOModule.cc \
+ BlockingDiskIOModule.h \
+ BlockingFile.cc \
+ BlockingFile.h \
+ BlockingIOStrategy.cc \
+ BlockingIOStrategy.h
--- /dev/null
+## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
+##
+## Squid software is distributed under GPLv2+ license and includes
+## contributions from numerous individuals and organizations.
+## Please see the COPYING and CONTRIBUTORS files for details.
+##
+
+include $(top_srcdir)/src/Common.am
+include $(top_srcdir)/src/TestHeaders.am
+
+noinst_LTLIBRARIES = libDiskDaemon.la
+libexec_PROGRAMS = diskd
+
+libDiskDaemon_la_SOURCES = \
+ diomsg.h \
+ DiskdAction.cc \
+ DiskdAction.h \
+ DiskdFile.cc \
+ DiskdFile.h \
+ DiskdIOStrategy.cc \
+ DiskdIOStrategy.h \
+ DiskDaemonDiskIOModule.cc \
+ DiskDaemonDiskIOModule.h
+
+diskd_SOURCES = diskd.cc
+nodist_diskd_SOURCES = time.cc
+diskd_LDADD = \
+ $(top_builddir)/lib/libmisccontainers.la \
+ $(top_builddir)/lib/libmiscencoding.la \
+ $(top_builddir)/lib/libmiscutil.la \
+ $(COMPAT_LIB) \
+ $(XTRA_LIBS)
+
+time.cc: $(top_srcdir)/src/time.cc
+ cp $(top_srcdir)/src/time.cc time.cc
#include "squid.h"
#include "DiskIOModule.h"
+#if HAVE_DISKIO_MODULE_AIO
+#include "DiskIO/AIO/AIODiskIOModule.h"
+#endif
+#if HAVE_DISKIO_MODULE_BLOCKING
+#include "DiskIO/Blocking/BlockingDiskIOModule.h"
+#endif
+#if HAVE_DISKIO_MODULE_DISKDAEMON
+#include "DiskIO/DiskDaemon/DiskDaemonDiskIOModule.h"
+#endif
+#if HAVE_DISKIO_MODULE_DISKTHREADS
+#include "DiskIO/DiskThreads/DiskThreadsDiskIOModule.h"
+#endif
+#if HAVE_DISKIO_MODULE_IPCIO
+#include "DiskIO/IpcIo/IpcIoDiskIOModule.h"
+#endif
+#if HAVE_DISKIO_MODULE_DISKTHREADS
+#include "DiskIO/Mmapped/MmappedDiskIOModule.h"
+#endif
std::vector<DiskIOModule*> *DiskIOModule::_Modules = NULL;
{
/** We cannot call ModuleAdd(*this)
* here as the virtual methods are not yet available.
- * We leave that to PokeAllModules() later.
+ * We leave that to SetupAllModules() later.
*/
}
void
DiskIOModule::SetupAllModules()
{
- DiskIOModule::PokeAllModules();
+#if HAVE_DISKIO_MODULE_AIO
+ AIODiskIOModule::GetInstance();
+#endif
+#if HAVE_DISKIO_MODULE_BLOCKING
+ BlockingDiskIOModule::GetInstance();
+#endif
+#if HAVE_DISKIO_MODULE_DISKDAEMON
+ DiskDaemonDiskIOModule::GetInstance();
+#endif
+#if HAVE_DISKIO_MODULE_DISKTHREADS
+ DiskThreadsDiskIOModule::GetInstance();
+#endif
+#if HAVE_DISKIO_MODULE_IPCIO
+ IpcIoDiskIOModule::GetInstance();
+#endif
+#if HAVE_DISKIO_MODULE_MMAPPED
+ MmappedDiskIOModule::GetInstance();
+#endif
for (iterator i = GetModules().begin(); i != GetModules().end(); ++i)
/* Call the FS to set up capabilities and initialize the FS driver */
{
public:
+ /** Poke all compiled modules for self-setup */
static void SetupAllModules();
static void ModuleAdd(DiskIOModule &);
static void FreeAllModules();
- /** Poke all compiled modules for self-setup */
- static void PokeAllModules();
-
static DiskIOModule *Find(char const *type);
/** Find *any* usable disk module. This will look for the 'best'
--- /dev/null
+## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
+##
+## Squid software is distributed under GPLv2+ license and includes
+## contributions from numerous individuals and organizations.
+## Please see the COPYING and CONTRIBUTORS files for details.
+##
+
+include $(top_srcdir)/src/Common.am
+include $(top_srcdir)/src/TestHeaders.am
+
+noinst_LTLIBRARIES = libDiskThreads.la
+
+libDiskThreads_la_SOURCES = \
+ async_io.cc \
+ CommIO.cc \
+ CommIO.h \
+ DiskThreads.h \
+ DiskThreadsDiskFile.cc \
+ DiskThreadsDiskFile.h \
+ DiskThreadsDiskIOModule.cc \
+ DiskThreadsDiskIOModule.h \
+ DiskThreadsIOStrategy.cc \
+ DiskThreadsIOStrategy.h
+
+if ENABLE_WIN32_AIOPS
+libDiskThreads_la_SOURCES += aiops_win32.cc
+EXTRA_DIST = aiops.cc
+else
+libDiskThreads_la_SOURCES += aiops.cc
+EXTRA_DIST = aiops_win32.cc
+endif
+
--- /dev/null
+## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
+##
+## Squid software is distributed under GPLv2+ license and includes
+## contributions from numerous individuals and organizations.
+## Please see the COPYING and CONTRIBUTORS files for details.
+##
+
+include $(top_srcdir)/src/Common.am
+include $(top_srcdir)/src/TestHeaders.am
+
+noinst_LTLIBRARIES = libIpcIo.la
+
+libIpcIo_la_SOURCES = \
+ IpcIoDiskIOModule.cc \
+ IpcIoDiskIOModule.h \
+ IpcIoFile.cc \
+ IpcIoFile.h \
+ IpcIoIOStrategy.cc \
+ IpcIoIOStrategy.h
include $(top_srcdir)/src/Common.am
include $(top_srcdir)/src/TestHeaders.am
+SUBDIRS=
+DIST_SUBDIRS= AIO Blocking DiskDaemon DiskThreads IpcIo Mmapped
+
noinst_LTLIBRARIES = libdiskio.la
libdiskio_la_SOURCES = \
WriteRequest.cc \
WriteRequest.h
-EXTRA_DIST = modules.sh
+# Custom DiskIO modules (if any):
+libdiskio_la_LIBADD = $(DISK_LIBS)
+
+# Optional DiskIO modules:
+
+if ENABLE_DISKIO_AIO
+SUBDIRS += AIO
+libdiskio_la_LIBADD += AIO/libAIO.la $(AIOLIB)
+endif
+
+if ENABLE_DISKIO_BLOCKING
+SUBDIRS += Blocking
+libdiskio_la_LIBADD += Blocking/libBlocking.la
+endif
+
+if ENABLE_DISKIO_DISKDAEMON
+SUBDIRS += DiskDaemon
+libdiskio_la_LIBADD += DiskDaemon/libDiskDaemon.la
+endif
+
+if ENABLE_DISKIO_DISKTHREADS
+SUBDIRS += DiskThreads
+libdiskio_la_LIBADD += DiskThreads/libDiskThreads.la $(LIBPTHREADS)
+endif
+
+if ENABLE_DISKIO_IPCIO
+SUBDIRS += IpcIo
+libdiskio_la_LIBADD += IpcIo/libIpcIo.la
+endif
+
+if ENABLE_DISKIO_MMAPPED
+SUBDIRS += Mmapped
+libdiskio_la_LIBADD += Mmapped/libMmapped.la
+endif
--- /dev/null
+## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
+##
+## Squid software is distributed under GPLv2+ license and includes
+## contributions from numerous individuals and organizations.
+## Please see the COPYING and CONTRIBUTORS files for details.
+##
+
+include $(top_srcdir)/src/Common.am
+include $(top_srcdir)/src/TestHeaders.am
+
+noinst_LTLIBRARIES = libMmapped.la
+
+libMmapped_la_SOURCES = \
+ MmappedDiskIOModule.cc \
+ MmappedDiskIOModule.h \
+ MmappedFile.cc \
+ MmappedFile.h \
+ MmappedIOStrategy.cc \
+ MmappedIOStrategy.h
+++ /dev/null
-#!/bin/sh
-#
-## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
-##
-## Squid software is distributed under GPLv2+ license and includes
-## contributions from numerous individuals and organizations.
-## Please see the COPYING and CONTRIBUTORS files for details.
-##
-
-echo "/* automatically generated by $0 $*"
-echo " * do not edit"
-echo " */"
-cat `dirname $0`/../../scripts/boilerplate.h
-echo "#include \"squid.h\""
-echo "#include \"DiskIO/DiskIOModule.h\""
-for module in "$@"; do
- echo "#include \"DiskIO/${module}/${module}DiskIOModule.h\""
-done
-echo ""
-echo "void DiskIOModule::PokeAllModules(void)"
-echo "{"
-for module in "$@"; do
- echo " ${module}DiskIOModule::GetInstance();"
-done
-echo "}"
IPC_SOURCE = SquidIpc.h ipc.cc
endif
-AIO_WIN32_ALL_SOURCES = \
- DiskIO/AIO/aio_win32.cc \
- DiskIO/AIO/aio_win32.h
-if ENABLE_WIN32_AIO
-AIO_WIN32_SOURCES = $(AIO_WIN32_ALL_SOURCES)
-else
-AIO_WIN32_SOURCES =
-endif
-
-if ENABLE_WIN32_AIOPS
-AIOPS_SOURCE = DiskIO/DiskThreads/aiops_win32.cc \
- DiskIO/DiskThreads/CommIO.cc \
- DiskIO/DiskThreads/CommIO.h
-else
-AIOPS_SOURCE = DiskIO/DiskThreads/aiops.cc \
- DiskIO/DiskThreads/CommIO.cc \
- DiskIO/DiskThreads/CommIO.h
-endif
-
-EXTRA_LIBRARIES = libAIO.a libBlocking.a libDiskDaemon.a libDiskThreads.a \
- libMmapped.a libIpcIo.a
-noinst_LIBRARIES = $(DISK_LIBS)
noinst_LTLIBRARIES = libsquid.la
EXTRA_PROGRAMS = \
- DiskIO/DiskDaemon/diskd \
unlinkd \
recv-announce \
tests/testUfs \
libexec_PROGRAMS = \
- $(DISK_PROGRAMS) \
$(UNLINKD)
cf_gen_SOURCES = cf_gen.cc
ACL_REGISTRATION_SOURCES = AclRegs.cc AuthReg.cc
-DISKIO_GEN_SOURCE = \
- DiskIO/DiskIOModules_gen.cc
-
-DiskIO/DiskIOModules_gen.cc: Makefile
- $(SHELL) $(srcdir)/DiskIO/modules.sh $(DISK_MODULES) > DiskIO/DiskIOModules_gen.cc
-
-
# common library for all the binaries and tests. This is kindof a catch all
# and smaller libraries split from this are encouraged. Using lt convenience
# libraries, dependencies should not be a problem either.
$(WINSVC_SOURCE)
EXTRA_squid_SOURCES = \
- $(AIO_WIN32_ALL_SOURCES) \
$(all_AUTHMODULES) \
ConfigOption.h \
$(DELAY_POOL_ALL_SOURCE) \
CLEANFILES += $(BUILT_SOURCES)
nodist_squid_SOURCES = \
- $(DISKIO_GEN_SOURCE) \
$(BUILT_SOURCES)
squid_LDADD = \
libsquid.la \
ip/libip.la \
fs/libfs.la \
- $(DISK_LIBS) \
DiskIO/libdiskio.la \
$(SSL_LIBS) \
ipc/libipc.la \
$(XTRA_OBJS) \
$(DISK_LINKOBJS) \
$(REPL_OBJS) \
- $(DISK_OS_LIBS) \
$(NETTLELIB) \
$(CRYPTLIB) \
$(REGEXLIB) \
fs/libfs.la \
ipc/libipc.la \
mgr/libmgr.la \
- $(DISK_LIBS) \
DiskIO/libdiskio.la \
$(DISK_LINKOBJS) \
$(REPL_OBJS)
cf_gen_defines \
cf.data.pre \
cf.data.depend \
- DiskIO/modules.sh \
mk-globals-c.pl \
mk-globals-c.awk \
mk-string-arrays.pl \
mib.txt \
mime.conf.default
-libAIO_a_SOURCES = \
- $(AIO_WIN32_SOURCES) \
- DiskIO/AIO/async_io.h \
- DiskIO/AIO/AIODiskFile.cc \
- DiskIO/AIO/AIODiskFile.h \
- DiskIO/AIO/AIODiskIOStrategy.cc \
- DiskIO/AIO/AIODiskIOStrategy.h \
- DiskIO/AIO/AIODiskIOModule.cc \
- DiskIO/AIO/AIODiskIOModule.h
-
-libBlocking_a_SOURCES = \
- DiskIO/Blocking/BlockingFile.cc \
- DiskIO/Blocking/BlockingFile.h \
- DiskIO/Blocking/BlockingIOStrategy.cc \
- DiskIO/Blocking/BlockingIOStrategy.h \
- DiskIO/Blocking/BlockingDiskIOModule.cc \
- DiskIO/Blocking/BlockingDiskIOModule.h
-
-libMmapped_a_SOURCES = \
- DiskIO/Mmapped/MmappedFile.cc \
- DiskIO/Mmapped/MmappedFile.h \
- DiskIO/Mmapped/MmappedIOStrategy.cc \
- DiskIO/Mmapped/MmappedIOStrategy.h \
- DiskIO/Mmapped/MmappedDiskIOModule.cc \
- DiskIO/Mmapped/MmappedDiskIOModule.h
-
-libIpcIo_a_SOURCES = \
- DiskIO/IpcIo/IpcIoFile.cc \
- DiskIO/IpcIo/IpcIoFile.h \
- DiskIO/IpcIo/IpcIoIOStrategy.cc \
- DiskIO/IpcIo/IpcIoIOStrategy.h \
- DiskIO/IpcIo/IpcIoDiskIOModule.cc \
- DiskIO/IpcIo/IpcIoDiskIOModule.h
-
-libDiskDaemon_a_SOURCES = \
- DiskIO/DiskDaemon/DiskdFile.cc \
- DiskIO/DiskDaemon/DiskdFile.h \
- DiskIO/DiskDaemon/DiskdIOStrategy.cc \
- DiskIO/DiskDaemon/DiskdIOStrategy.h \
- DiskIO/DiskDaemon/diomsg.h \
- DiskIO/DiskDaemon/DiskDaemonDiskIOModule.cc \
- DiskIO/DiskDaemon/DiskDaemonDiskIOModule.h \
- DiskIO/DiskDaemon/DiskdAction.cc \
- DiskIO/DiskDaemon/DiskdAction.h
-
-libDiskThreads_a_SOURCES = \
- $(AIOPS_SOURCE) \
- DiskIO/DiskThreads/async_io.cc \
- DiskIO/DiskThreads/DiskThreads.h \
- DiskIO/DiskThreads/DiskThreadsDiskFile.cc \
- DiskIO/DiskThreads/DiskThreadsDiskFile.h \
- DiskIO/DiskThreads/DiskThreadsDiskIOModule.cc \
- DiskIO/DiskThreads/DiskThreadsDiskIOModule.h \
- DiskIO/DiskThreads/DiskThreadsIOStrategy.cc \
- DiskIO/DiskThreads/DiskThreadsIOStrategy.h
-
-EXTRA_libDiskThreads_a_SOURCES = \
- DiskIO/DiskThreads/aiops.cc \
- DiskIO/DiskThreads/aiops_win32.cc \
- DiskIO/DiskThreads/CommIO.cc \
- DiskIO/DiskThreads/CommIO.h
-
-DiskIO_DiskDaemon_diskd_SOURCES = DiskIO/DiskDaemon/diskd.cc
-nodist_DiskIO_DiskDaemon_diskd_SOURCES = time.cc
-DiskIO_DiskDaemon_diskd_LDADD = \
- $(top_builddir)/lib/libmisccontainers.la \
- $(top_builddir)/lib/libmiscencoding.la \
- $(top_builddir)/lib/libmiscutil.la \
- $(COMPAT_LIB) \
- $(XTRA_LIBS)
-
-
DEFAULT_HTTP_PORT = 3128
DEFAULT_ICP_PORT = 3130
DEFAULT_PREFIX = $(prefix)
@$(SHELL) $(top_srcdir)/scripts/remove-cfg.sh "$(RM)" $(DESTDIR)$(DEFAULT_CONFIG_FILE) squid.conf.default
CLEANFILES += cf.data squid.conf.default squid.conf.documented \
- DiskIO/DiskIOModules_gen.cc \
test_tools.cc *.a
test_tools.cc: $(top_srcdir)/test-suite/test_tools.cc
$(top_builddir)/lib/libmisccontainers.la \
$(top_builddir)/lib/libmiscencoding.la \
$(top_builddir)/lib/libmiscutil.la \
- $(DISK_OS_LIBS) \
$(NETTLELIB) \
$(REGEXLIB) \
$(SQUID_CPPUNIT_LIBS) \
wordlist.h \
wordlist.cc
nodist_tests_testCacheManager_SOURCES = \
- $(BUILT_SOURCES) \
- $(DISKIO_GEN_SOURCE)
+ $(BUILT_SOURCES)
# comm.cc only requires comm/libcomm.la until fdc_table is dead.
tests_testCacheManager_LDADD = \
libsquid.la \
log/liblog.la \
format/libformat.la \
$(REPL_OBJS) \
- $(DISK_LIBS) \
DiskIO/libdiskio.la \
- $(DISK_OS_LIBS) \
$(ADAPTATION_LIBS) \
$(ESI_LIBS) \
$(SSL_LIBS) \
tests/stub_tools.cc
nodist_tests_testDiskIO_SOURCES= \
$(TESTSOURCES) \
- $(DISKIO_GEN_SOURCE) \
SquidMath.cc \
SquidMath.h \
swap_log_op.cc
fs/libfs.la \
ipc/libipc.la \
$(REPL_OBJS) \
- $(DISK_LIBS) \
DiskIO/libdiskio.la \
- $(DISK_OS_LIBS) \
acl/libapi.la \
anyp/libanyp.la \
mgr/libmgr.la \
tests_testDiskIO_LDFLAGS = $(LIBADD_DL)
tests_testDiskIO_DEPENDENCIES = \
- $(DISK_LIBS) \
DiskIO/libdiskio.la \
$(SWAP_TEST_DS) \
$(SQUID_CPPUNIT_LA)
wordlist.h \
wordlist.cc
nodist_tests_testEvent_SOURCES = \
- $(BUILT_SOURCES) \
- $(DISKIO_GEN_SOURCE)
+ $(BUILT_SOURCES)
tests_testEvent_LDADD = \
libsquid.la \
clients/libclients.la \
$(top_builddir)/lib/libmisccontainers.la \
$(top_builddir)/lib/libmiscencoding.la \
$(top_builddir)/lib/libmiscutil.la \
- $(DISK_LIBS) \
DiskIO/libdiskio.la \
- $(DISK_OS_LIBS) \
ipc/libipc.la \
mgr/libmgr.la \
$(SNMP_LIBS) \
wordlist.h \
wordlist.cc
nodist_tests_testEventLoop_SOURCES = \
- $(BUILT_SOURCES) \
- $(DISKIO_GEN_SOURCE)
+ $(BUILT_SOURCES)
tests_testEventLoop_LDADD = \
libsquid.la \
clients/libclients.la \
$(top_builddir)/lib/libmisccontainers.la \
$(top_builddir)/lib/libmiscencoding.la \
$(top_builddir)/lib/libmiscutil.la \
- $(DISK_LIBS) \
DiskIO/libdiskio.la \
- $(DISK_OS_LIBS) \
ipc/libipc.la \
mgr/libmgr.la \
$(SNMP_LIBS) \
wordlist.h \
wordlist.cc
nodist_tests_test_http_range_SOURCES = \
- $(BUILT_SOURCES) \
- $(DISKIO_GEN_SOURCE)
+ $(BUILT_SOURCES)
tests_test_http_range_LDADD = \
libsquid.la \
clients/libclients.la \
log/liblog.la \
format/libformat.la \
$(REPL_OBJS) \
- $(DISK_LIBS) \
DiskIO/libdiskio.la \
- $(DISK_OS_LIBS) \
$(ADAPTATION_LIBS) \
$(ESI_LIBS) \
$(SSL_LIBS) \
$(top_builddir)/lib/libmisccontainers.la \
$(top_builddir)/lib/libmiscencoding.la \
$(top_builddir)/lib/libmiscutil.la \
- $(DISK_OS_LIBS) \
$(NETTLELIB) \
$(REGEXLIB) \
$(SQUID_CPPUNIT_LIBS) \
libsquid.la \
ip/libip.la \
fs/libfs.la \
- $(DISK_LIBS) \
DiskIO/libdiskio.la \
ipc/libipc.la \
mgr/libmgr.la \
nodist_tests_testUfs_SOURCES = \
$(TESTSOURCES) \
- $(DISKIO_GEN_SOURCE) \
SquidMath.cc \
SquidMath.h \
swap_log_op.cc
mgr/libmgr.la \
$(REPL_OBJS) \
acl/libacls.la \
- $(DISK_LIBS) \
DiskIO/libdiskio.la \
- $(DISK_OS_LIBS) \
acl/libapi.la \
$(SSL_LIBS) \
ipc/libipc.la \
$(DELAY_POOL_SOURCE) \
$(UNLINKDSOURCE)
nodist_tests_testRock_SOURCES = \
- $(DISKIO_GEN_SOURCE) \
swap_log_op.cc \
SquidMath.cc \
SquidMath.h \
fs/libfs.la \
$(COMMON_LIBS) \
$(REPL_OBJS) \
- $(DISK_LIBS) \
DiskIO/libdiskio.la \
- $(DISK_OS_LIBS) \
acl/libacls.la \
acl/libapi.la \
acl/libstate.la \
icmp/libicmp.la icmp/libicmp-core.la \
comm/libcomm.la \
log/liblog.la \
- $(DISK_OS_LIBS) \
format/libformat.la \
$(REGEXLIB) \
$(REPL_OBJS) \
#include "mgr/Request.h"
#include "mgr/Response.h"
#include "SwapDir.h" /* XXX: scope boundary violation */
-#if USE_DISKIO_IPCIO
+#if HAVE_DISKIO_MODULE_IPCIO
#include "DiskIO/IpcIo/IpcIoFile.h" /* XXX: scope boundary violation */
#endif
#if SQUID_SNMP
SharedListenJoined(SharedListenResponse(message));
break;
-#if USE_DISKIO_IPCIO
+#if HAVE_DISKIO_MODULE_IPCIO
case mtStrandSearchResponse:
IpcIoFile::HandleOpenResponse(StrandSearchResponse(message));
break;
case mtIpcIoNotification:
IpcIoFile::HandleNotification(message);
break;
-#endif /* USE_DISKIO_IPCIO */
+#endif /* HAVE_DISKIO_MODULE_IPCIO */
case mtCacheMgrRequest: {
const Mgr::Request req(message);
void DiskIOModule::SetupAllModules() STUB
void DiskIOModule::ModuleAdd(DiskIOModule &) STUB
void DiskIOModule::FreeAllModules() STUB
-void DiskIOModule::PokeAllModules() STUB
DiskIOModule *DiskIOModule::Find(char const *) STUB_RETVAL(NULL)
DiskIOModule *DiskIOModule::FindDefault() STUB_RETVAL(NULL)
std::vector<DiskIOModule*> const &DiskIOModule::Modules() STUB_RETSTATREF(std::vector<DiskIOModule*>)