+/*
+ * Copyright (C) 1996-2018 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.
+ */
+
/*
* DiskThreads.h
*
#ifndef __DISKTHREADS_H__
#define __DISKTHREADS_H__
-#ifdef AUFS_IO_THREADS
+#include "dlink.h"
+#include "mem/forward.h"
+
+/* this non-standard-conformant include is needed in order to have stat(2) and struct stat
+ properly defined on some systems (e.g. OpenBSD 5.4) */
+#if HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#if AUFS_IO_THREADS
#define NUMTHREADS AUFS_IO_THREADS
#else
#define NUMTHREADS (Config.cacheSwap.n_configured*16)
typedef void AIOCB(int fd, void *cbdata, const char *buf, int aio_return, int aio_errno);
-struct squidaio_result_t {
- int aio_return;
- int aio_errno;
- enum _squidaio_request_type result_type;
- void *_data; /* Internal housekeeping */
- void *data; /* Available to the caller */
+class squidaio_result_t
+{
+public:
+ int aio_return = 0;
+ int aio_errno = 0;
+ enum _squidaio_request_type result_type = _AIO_OP_NONE;
+ void *_data = nullptr; /* Internal housekeeping */
+ void *data = nullptr; /* Available to the caller */
};
-struct squidaio_ctrl_t {
+class squidaio_ctrl_t
+{
+ MEMPROXY_CLASS(squidaio_ctrl_t);
+public:
+ squidaio_ctrl_t() : done_handler(NULL), free_func(NULL) {}
- struct squidaio_ctrl_t *next;
- int fd;
- int operation;
+ squidaio_ctrl_t *next = nullptr;
+ int fd = 0;
+ int operation = 0;
AIOCB *done_handler;
- void *done_handler_data;
+ void *done_handler_data = nullptr;
squidaio_result_t result;
- int len;
- char *bufp;
+ int len = 0;
+ char *bufp = nullptr;
FREE *free_func;
dlink_node node;
};
class DiskThreadsIOStrategy;
-struct AIOCounts {
- int open_start;
- int open_finish;
- int close_start;
- int close_finish;
- int cancel;
- int write_start;
- int write_finish;
- int read_start;
- int read_finish;
- int stat_start;
- int stat_finish;
- int unlink_start;
- int unlink_finish;
- int check_callback;
+class AIOCounts
+{
+public:
+ uint64_t open_start = 0;
+ uint64_t open_finish = 0;
+ uint64_t close_start = 0;
+ uint64_t close_finish = 0;
+ uint64_t cancel = 0;
+ uint64_t write_start = 0;
+ uint64_t write_finish = 0;
+ uint64_t read_start = 0;
+ uint64_t read_finish = 0;
+ uint64_t stat_start = 0;
+ uint64_t stat_finish = 0;
+ uint64_t unlink_start = 0;
+ uint64_t unlink_finish = 0;
+ uint64_t check_callback = 0;
};
extern AIOCounts squidaio_counts;
extern dlink_list used_list;
-
#endif
+