From: Francesco Chemolli Date: Thu, 29 Oct 2015 08:38:29 +0000 (+0100) Subject: Migrate squidaio_ctrl_t to MEMPROXY_CLASS X-Git-Tag: SQUID_4_0_2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=91ea1911fecbb12ac42817a748c3e1004995008c;p=thirdparty%2Fsquid.git Migrate squidaio_ctrl_t to MEMPROXY_CLASS --- diff --git a/src/DiskIO/DiskThreads/DiskThreads.h b/src/DiskIO/DiskThreads/DiskThreads.h index 6695128980..005e9a6518 100644 --- a/src/DiskIO/DiskThreads/DiskThreads.h +++ b/src/DiskIO/DiskThreads/DiskThreads.h @@ -56,7 +56,9 @@ typedef enum _squidaio_request_type squidaio_request_type; typedef void AIOCB(int fd, void *cbdata, const char *buf, int aio_return, int aio_errno); -struct squidaio_result_t { +class squidaio_result_t { +public: + squidaio_result_t() : aio_return(0), aio_errno(0), result_type(_AIO_OP_NONE), _data(nullptr), data(nullptr) {} int aio_return; int aio_errno; enum _squidaio_request_type result_type; @@ -64,8 +66,10 @@ struct squidaio_result_t { void *data; /* Available to the caller */ }; -struct squidaio_ctrl_t { - +class squidaio_ctrl_t { + MEMPROXY_CLASS(squidaio_ctrl_t); +public: + squidaio_ctrl_t() : next(nullptr), fd(0), operation(0), done_handler(nullptr), done_handler_data(nullptr), len(0), bufp(0), free_func(nullptr) {} struct squidaio_ctrl_t *next; int fd; int operation; diff --git a/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc b/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc index 59079089ac..1318c6db52 100644 --- a/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc +++ b/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc @@ -28,8 +28,6 @@ DiskThreadsIOStrategy::init(void) if (initialised) return; - squidaio_ctrl_pool = memPoolCreate("aio_ctrl", sizeof(squidaio_ctrl_t)); - initialised = true; /* @@ -56,10 +54,6 @@ DiskThreadsIOStrategy::done(void) squidaio_shutdown(); - delete squidaio_ctrl_pool; - - squidaio_ctrl_pool = NULL; - initialised = false; } @@ -144,7 +138,7 @@ DiskThreadsIOStrategy::callback() if (ctrlp->operation == _AIO_READ) squidaio_xfree(ctrlp->bufp, ctrlp->len); - squidaio_ctrl_pool->freeOne(ctrlp); + delete ctrlp; } return retval; @@ -168,8 +162,7 @@ DiskThreadsIOStrategy::sync() } DiskThreadsIOStrategy::DiskThreadsIOStrategy() : - initialised(false), - squidaio_ctrl_pool(NULL) + initialised(false) {} void diff --git a/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.h b/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.h index 0e6cb46603..2f930531cf 100644 --- a/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.h +++ b/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.h @@ -37,7 +37,6 @@ public: /* Todo: add access limitations */ bool initialised; static DiskThreadsIOStrategy Instance; - MemAllocator *squidaio_ctrl_pool; private: static void aioStats(StoreEntry * sentry); diff --git a/src/DiskIO/DiskThreads/async_io.cc b/src/DiskIO/DiskThreads/async_io.cc index 0e0216eeba..78c4188975 100644 --- a/src/DiskIO/DiskThreads/async_io.cc +++ b/src/DiskIO/DiskThreads/async_io.cc @@ -38,7 +38,7 @@ aioOpen(const char *path, int oflag, mode_t mode, AIOCB * callback, void *callba assert(DiskThreadsIOStrategy::Instance.initialised); ++squidaio_counts.open_start; - ctrlp = (squidaio_ctrl_t *)DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->alloc(); + ctrlp = new squidaio_ctrl_t; ctrlp->fd = -2; ctrlp->done_handler = callback; ctrlp->done_handler_data = cbdataReference(callback_data); @@ -57,7 +57,7 @@ aioClose(int fd) assert(DiskThreadsIOStrategy::Instance.initialised); ++squidaio_counts.close_start; aioCancel(fd); - ctrlp = (squidaio_ctrl_t *)DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->alloc(); + ctrlp = new squidaio_ctrl_t; ctrlp->fd = fd; ctrlp->done_handler = NULL; ctrlp->done_handler_data = NULL; @@ -105,7 +105,7 @@ aioCancel(int fd) } dlinkDelete(m, &used_list); - DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->freeOne(ctrlp); + delete ctrlp; } } @@ -117,7 +117,7 @@ aioWrite(int fd, off_t offset, char *bufp, size_t len, AIOCB * callback, void *c assert(DiskThreadsIOStrategy::Instance.initialised); ++squidaio_counts.write_start; - ctrlp = (squidaio_ctrl_t *)DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->alloc(); + ctrlp = new squidaio_ctrl_t; ctrlp->fd = fd; ctrlp->done_handler = callback; ctrlp->done_handler_data = cbdataReference(callback_data); @@ -145,7 +145,7 @@ aioRead(int fd, off_t offset, size_t len, AIOCB * callback, void *callback_data) assert(DiskThreadsIOStrategy::Instance.initialised); ++squidaio_counts.read_start; - ctrlp = (squidaio_ctrl_t *)DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->alloc(); + ctrlp = new squidaio_ctrl_t; ctrlp->fd = fd; ctrlp->done_handler = callback; ctrlp->done_handler_data = cbdataReference(callback_data); @@ -174,7 +174,7 @@ aioStat(char *path, struct stat *sb, AIOCB * callback, void *callback_data) assert(DiskThreadsIOStrategy::Instance.initialised); ++squidaio_counts.stat_start; - ctrlp = (squidaio_ctrl_t *)DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->alloc(); + ctrlp = new squidaio_ctrl_t; ctrlp->fd = -2; ctrlp->done_handler = callback; ctrlp->done_handler_data = cbdataReference(callback_data); @@ -191,7 +191,7 @@ aioUnlink(const char *path, AIOCB * callback, void *callback_data) squidaio_ctrl_t *ctrlp; assert(DiskThreadsIOStrategy::Instance.initialised); ++squidaio_counts.unlink_start; - ctrlp = (squidaio_ctrl_t *)DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->alloc(); + ctrlp = new squidaio_ctrl_t; ctrlp->fd = -2; ctrlp->done_handler = callback; ctrlp->done_handler_data = cbdataReference(callback_data); @@ -204,6 +204,6 @@ aioUnlink(const char *path, AIOCB * callback, void *callback_data) int aioQueueSize(void) { - return DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->inUseCount(); + return squidaio_ctrl_t::UseCount(); }