|
Squid Web Cache master
|
#include "squid.h"#include "compat/unistd.h"#include "compat/win32_maperror.h"#include "DiskIO/DiskThreads/CommIO.h"#include "DiskThreads.h"#include "fd.h"#include "mem/Allocator.h"#include "mem/Pool.h"#include "SquidConfig.h"#include "Store.h"#include <cerrno>#include <csignal>#include <sys/stat.h>#include <fcntl.h>#include <dirent.h>Go to the source code of this file.
Classes | |
| struct | squidaio_request_t |
| struct | squidaio_request_queue_t |
| struct | squidaio_thread_t |
Macros | |
| #define | RIDICULOUS_LENGTH 4096 |
| #define | AIO_LARGE_BUFS 16384 |
| #define | AIO_MEDIUM_BUFS AIO_LARGE_BUFS >> 1 |
| #define | AIO_SMALL_BUFS AIO_LARGE_BUFS >> 2 |
| #define | AIO_TINY_BUFS AIO_LARGE_BUFS >> 3 |
| #define | AIO_MICRO_BUFS 128 |
Typedefs | |
| typedef enum _squidaio_thread_status | squidaio_thread_status |
| typedef struct squidaio_request_t | squidaio_request_t |
| typedef struct squidaio_request_queue_t | squidaio_request_queue_t |
| typedef struct squidaio_thread_t | squidaio_thread_t |
Enumerations | |
| enum | _squidaio_thread_status { _THREAD_STARTING = 0 , _THREAD_WAITING , _THREAD_BUSY , _THREAD_FAILED , _THREAD_DONE } |
Variables | ||
| static squidaio_thread_t * | threads = nullptr | |
| static int | squidaio_initialised = 0 | |
| static Mem::Allocator * | squidaio_large_bufs = nullptr | |
| static Mem::Allocator * | squidaio_medium_bufs = nullptr | |
| static Mem::Allocator * | squidaio_small_bufs = nullptr | |
| static Mem::Allocator * | squidaio_tiny_bufs = nullptr | |
| static Mem::Allocator * | squidaio_micro_bufs = nullptr | |
| static size_t | request_queue_len = 0 | |
| static Mem::Allocator * | squidaio_request_pool = nullptr | |
| static Mem::Allocator * | squidaio_thread_pool = nullptr | |
| static squidaio_request_queue_t | request_queue | |
| struct { | ||
| squidaio_request_t * head | ||
| squidaio_request_t ** tailp | ||
| } | request_queue2 | |
| static squidaio_request_queue_t | done_queue | |
| struct { | ||
| squidaio_request_t * head | ||
| squidaio_request_t ** tailp | ||
| } | done_requests | |
| static HANDLE | main_thread | |
| #define AIO_LARGE_BUFS 16384 |
Definition at line 102 of file aiops_win32.cc.
| #define AIO_MEDIUM_BUFS AIO_LARGE_BUFS >> 1 |
Definition at line 103 of file aiops_win32.cc.
| #define AIO_MICRO_BUFS 128 |
Definition at line 106 of file aiops_win32.cc.
| #define AIO_SMALL_BUFS AIO_LARGE_BUFS >> 2 |
Definition at line 104 of file aiops_win32.cc.
| #define AIO_TINY_BUFS AIO_LARGE_BUFS >> 3 |
Definition at line 105 of file aiops_win32.cc.
| #define RIDICULOUS_LENGTH 4096 |
Definition at line 28 of file aiops_win32.cc.
| typedef struct squidaio_request_queue_t squidaio_request_queue_t |
| typedef struct squidaio_request_t squidaio_request_t |
| typedef enum _squidaio_thread_status squidaio_thread_status |
Definition at line 37 of file aiops_win32.cc.
| typedef struct squidaio_thread_t squidaio_thread_t |
Definition at line 71 of file aiops_win32.cc.
| Enumerator | |
|---|---|
| _THREAD_STARTING | |
| _THREAD_WAITING | |
| _THREAD_BUSY | |
| _THREAD_FAILED | |
| _THREAD_DONE | |
Definition at line 30 of file aiops_win32.cc.
| int squidaio_cancel | ( | squidaio_result_t * | resultp | ) |
Definition at line 696 of file aiops_win32.cc.
References _AIO_OP_NONE, squidaio_result_t::_data, squidaio_request_t::cancelled, debugs, squidaio_request_t::request_type, squidaio_result_t::result_type, and squidaio_request_t::resultp.
|
static |
Definition at line 633 of file aiops_win32.cc.
References _AIO_OP_CLOSE, _AIO_OP_OPEN, _AIO_OP_OPENDIR, _AIO_OP_READ, _AIO_OP_STAT, _AIO_OP_UNLINK, _AIO_OP_WRITE, squidaio_result_t::aio_errno, squidaio_result_t::aio_return, squidaio_request_t::cancelled, squidaio_request_t::err, squidaio_request_t::fd, Mem::Allocator::freeOne(), NULL, squidaio_request_t::path, squidaio_request_t::request_type, squidaio_request_t::resultp, squidaio_request_t::ret, squidaio_request_pool, squidaio_xfree(), squidaio_xstrfree(), squidaio_request_t::statp, squidaio_request_t::tmpstatp, and xclose().
Referenced by squidaio_poll_done().
| int squidaio_close | ( | int | fd, |
| squidaio_result_t * | resultp | ||
| ) |
Definition at line 833 of file aiops_win32.cc.
References _AIO_OP_CLOSE, Mem::Allocator::alloc(), squidaio_request_t::cancelled, squidaio_request_t::fd, squidaio_request_t::request_type, squidaio_result_t::result_type, squidaio_request_t::resultp, squidaio_queue_request(), and squidaio_request_pool.
|
static |
Definition at line 1070 of file aiops_win32.cc.
References _AIO_OP_CLOSE, _AIO_OP_OPEN, _AIO_OP_READ, _AIO_OP_UNLINK, _AIO_OP_WRITE, debugs, squidaio_request_t::fd, squidaio_request_t::path, squidaio_request_t::request_type, and squidaio_request_t::ret.
Referenced by squidaio_poll_done().
|
static |
Definition at line 855 of file aiops_win32.cc.
References DBG_CRITICAL, debugs, squidaio_request_t::err, squidaio_request_t::fd, squidaio_request_t::ret, and xclose().
Referenced by squidaio_thread_loop().
|
static |
Definition at line 740 of file aiops_win32.cc.
References squidaio_request_t::err, squidaio_request_t::mode, squidaio_request_t::oflag, squidaio_request_t::path, and squidaio_request_t::ret.
Referenced by squidaio_thread_loop().
|
static |
Definition at line 777 of file aiops_win32.cc.
References squidaio_request_t::bufferp, squidaio_request_t::buflen, squidaio_request_t::err, squidaio_request_t::fd, squidaio_request_t::offset, squidaio_request_t::ret, and squidaio_request_t::whence.
Referenced by squidaio_thread_loop().
|
static |
Definition at line 894 of file aiops_win32.cc.
References squidaio_request_t::err, squidaio_request_t::path, squidaio_request_t::ret, and squidaio_request_t::tmpstatp.
Referenced by squidaio_thread_loop().
|
static |
Definition at line 924 of file aiops_win32.cc.
References squidaio_request_t::err, squidaio_request_t::path, and squidaio_request_t::ret.
Referenced by squidaio_thread_loop().
|
static |
Definition at line 821 of file aiops_win32.cc.
References squidaio_request_t::bufferp, squidaio_request_t::buflen, squidaio_request_t::err, squidaio_request_t::fd, and squidaio_request_t::ret.
Referenced by squidaio_thread_loop().
|
static |
Definition at line 141 of file aiops_win32.cc.
References AIO_LARGE_BUFS, AIO_MEDIUM_BUFS, AIO_MICRO_BUFS, AIO_SMALL_BUFS, AIO_TINY_BUFS, size, squidaio_large_bufs, squidaio_medium_bufs, squidaio_micro_bufs, squidaio_small_bufs, and squidaio_tiny_bufs.
Referenced by squidaio_xfree(), squidaio_xmalloc(), and squidaio_xstrfree().
| int squidaio_get_queue_len | ( | void | ) |
Definition at line 1064 of file aiops_win32.cc.
References request_queue_len.
| void squidaio_init | ( | void | ) |
Definition at line 204 of file aiops_win32.cc.
References _THREAD_FAILED, _THREAD_STARTING, AIO_LARGE_BUFS, AIO_MEDIUM_BUFS, AIO_MICRO_BUFS, AIO_SMALL_BUFS, AIO_TINY_BUFS, Mem::Allocator::alloc(), assert, squidaio_request_queue_t::blocked, squidaio_request_queue_t::cond, squidaio_thread_t::current_req, done_queue, squidaio_thread_t::dwThreadId, FALSE, fatal(), squidaio_request_queue_t::head, CommIO::Initialize(), main_thread, memPoolCreate, squidaio_request_queue_t::mutex, squidaio_thread_t::next, NULL, NUMTHREADS, request_queue, squidaio_request_queue_t::requests, squidaio_thread_t::requests, squidaio_initialised, squidaio_large_bufs, squidaio_medium_bufs, squidaio_micro_bufs, squidaio_request_pool, squidaio_small_bufs, squidaio_thread_loop(), squidaio_thread_pool, squidaio_tiny_bufs, squidaio_thread_t::status, squidaio_request_queue_t::tailp, squidaio_thread_t::thread, threads, and TRUE.
Referenced by squidaio_open(), squidaio_stat(), and squidaio_unlink().
| int squidaio_open | ( | const char * | path, |
| int | oflag, | ||
| mode_t | mode, | ||
| squidaio_result_t * | resultp | ||
| ) |
Definition at line 713 of file aiops_win32.cc.
References _AIO_OP_OPEN, Mem::Allocator::alloc(), squidaio_request_t::cancelled, squidaio_request_t::mode, squidaio_request_t::oflag, squidaio_request_t::path, squidaio_request_t::request_type, squidaio_result_t::result_type, squidaio_request_t::resultp, squidaio_init(), squidaio_queue_request(), squidaio_request_pool, and squidaio_xstrdup().
| int squidaio_operations_pending | ( | void | ) |
Definition at line 1046 of file aiops_win32.cc.
References done_requests, and request_queue_len.
Referenced by squidaio_sync().
| squidaio_result_t * squidaio_poll_done | ( | void | ) |
Definition at line 1002 of file aiops_win32.cc.
References squidaio_request_t::cancelled, debugs, done_requests, squidaio_request_t::err, squidaio_request_t::next, NULL, squidaio_request_t::request_type, CommIO::ResetNotifications(), squidaio_request_t::resultp, squidaio_request_t::ret, squidaio_cleanup_request(), squidaio_debug(), and squidaio_poll_queues().
|
static |
Definition at line 955 of file aiops_win32.cc.
References squidaio_request_queue_t::cond, done_queue, done_requests, fatal(), squidaio_request_queue_t::head, squidaio_request_queue_t::mutex, squidaio_request_t::next, request_queue, request_queue2, request_queue_len, and squidaio_request_queue_t::tailp.
Referenced by squidaio_poll_done(), squidaio_shutdown(), and squidaio_sync().
|
static |
Definition at line 533 of file aiops_win32.cc.
References squidaio_result_t::_data, squidaio_request_queue_t::cond, DBG_CRITICAL, DBG_IMPORTANT, debugs, squidaio_request_t::err, fatal(), int, MAGIC1, squidaio_request_queue_t::mutex, squidaio_request_t::next, request_queue, request_queue2, request_queue_len, squidaio_request_t::request_type, squidaio_request_t::resultp, squidaio_request_t::ret, RIDICULOUS_LENGTH, squid_curtime, squidaio_sync(), and squidaio_request_queue_t::tailp.
Referenced by squidaio_close(), squidaio_open(), squidaio_read(), squidaio_stat(), squidaio_unlink(), and squidaio_write().
| int squidaio_read | ( | int | fd, |
| char * | bufp, | ||
| size_t | bufs, | ||
| off_t | offset, | ||
| int | whence, | ||
| squidaio_result_t * | resultp | ||
| ) |
Definition at line 747 of file aiops_win32.cc.
References _AIO_OP_READ, Mem::Allocator::alloc(), squidaio_request_t::bufferp, squidaio_request_t::buflen, squidaio_request_t::cancelled, squidaio_request_t::fd, squidaio_request_t::offset, squidaio_request_t::request_type, squidaio_result_t::result_type, squidaio_request_t::resultp, squidaio_queue_request(), squidaio_request_pool, and squidaio_request_t::whence.
| void squidaio_shutdown | ( | void | ) |
Definition at line 321 of file aiops_win32.cc.
References squidaio_request_queue_t::cond, done_queue, squidaio_thread_t::exit, main_thread, squidaio_request_queue_t::mutex, squidaio_thread_t::next, CommIO::NotifyIOClose(), NUMTHREADS, request_queue, request_queue_len, squidaio_initialised, squidaio_poll_queues(), squidaio_thread_t::thread, threads, TRUE, xcalloc(), and xfree.
| int squidaio_stat | ( | const char * | path, |
| struct stat * | sb, | ||
| squidaio_result_t * | resultp | ||
| ) |
Definition at line 867 of file aiops_win32.cc.
References _AIO_OP_STAT, Mem::Allocator::alloc(), squidaio_request_t::cancelled, squidaio_request_t::path, squidaio_request_t::request_type, squidaio_result_t::result_type, squidaio_request_t::resultp, squidaio_init(), squidaio_queue_request(), squidaio_request_pool, squidaio_xmalloc(), squidaio_xstrdup(), squidaio_request_t::statp, and squidaio_request_t::tmpstatp.
| void squidaio_stats | ( | StoreEntry * | sentry | ) |
Definition at line 1100 of file aiops_win32.cc.
References squidaio_thread_t::dwThreadId, squidaio_thread_t::next, NUMTHREADS, squidaio_thread_t::requests, squidaio_initialised, storeAppendPrintf(), and threads.
| int squidaio_sync | ( | void | ) |
Definition at line 1052 of file aiops_win32.cc.
References request_queue_len, squidaio_operations_pending(), and squidaio_poll_queues().
Referenced by squidaio_queue_request().
|
static |
Definition at line 364 of file aiops_win32.cc.
References _AIO_OP_CLOSE, _AIO_OP_OPEN, _AIO_OP_OPENDIR, _AIO_OP_READ, _AIO_OP_STAT, _AIO_OP_UNLINK, _AIO_OP_WRITE, _THREAD_BUSY, _THREAD_DONE, _THREAD_FAILED, _THREAD_WAITING, squidaio_request_t::cancelled, squidaio_request_queue_t::cond, squidaio_thread_t::current_req, done_queue, squidaio_request_t::err, squidaio_thread_t::exit, FALSE, fatal(), squidaio_request_queue_t::head, squidaio_request_queue_t::mutex, squidaio_request_t::next, CommIO::NotifyIOCompleted(), request_queue, squidaio_request_t::request_type, squidaio_thread_t::requests, squidaio_request_t::ret, squidaio_do_close(), squidaio_do_open(), squidaio_do_read(), squidaio_do_stat(), squidaio_do_unlink(), squidaio_do_write(), squidaio_thread_t::status, and squidaio_request_queue_t::tailp.
Referenced by squidaio_init().
| int squidaio_unlink | ( | const char * | path, |
| squidaio_result_t * | resultp | ||
| ) |
Definition at line 901 of file aiops_win32.cc.
References _AIO_OP_UNLINK, Mem::Allocator::alloc(), squidaio_request_t::cancelled, squidaio_request_t::path, squidaio_request_t::request_type, squidaio_result_t::result_type, squidaio_request_t::resultp, squidaio_init(), squidaio_queue_request(), squidaio_request_pool, and squidaio_xstrdup().
| int squidaio_write | ( | int | fd, |
| char * | bufp, | ||
| size_t | bufs, | ||
| off_t | offset, | ||
| int | whence, | ||
| squidaio_result_t * | resultp | ||
| ) |
Definition at line 791 of file aiops_win32.cc.
References _AIO_OP_WRITE, Mem::Allocator::alloc(), squidaio_request_t::bufferp, squidaio_request_t::buflen, squidaio_request_t::cancelled, squidaio_request_t::fd, squidaio_request_t::offset, squidaio_request_t::request_type, squidaio_result_t::result_type, squidaio_request_t::resultp, squidaio_queue_request(), squidaio_request_pool, and squidaio_request_t::whence.
| void squidaio_xfree | ( | void * | p, |
| int | size | ||
| ) |
Definition at line 184 of file aiops_win32.cc.
References size, squidaio_get_pool(), and xfree.
Referenced by squidaio_cleanup_request().
| void * squidaio_xmalloc | ( | int | size | ) |
Definition at line 160 of file aiops_win32.cc.
References Mem::Allocator::alloc(), size, squidaio_get_pool(), and xmalloc.
Referenced by squidaio_stat(), and squidaio_xstrdup().
|
static |
Definition at line 172 of file aiops_win32.cc.
References squidaio_xmalloc().
Referenced by squidaio_open(), squidaio_stat(), and squidaio_unlink().
|
static |
Definition at line 193 of file aiops_win32.cc.
References squidaio_get_pool(), and xfree.
Referenced by squidaio_cleanup_request().
|
static |
Definition at line 127 of file aiops_win32.cc.
Referenced by squidaio_init(), squidaio_poll_queues(), squidaio_shutdown(), and squidaio_thread_loop().
| struct { ... } done_requests |
Referenced by squidaio_operations_pending(), squidaio_poll_done(), and squidaio_poll_queues().
| squidaio_request_t* head |
Definition at line 120 of file aiops_win32.cc.
|
static |
Definition at line 138 of file aiops_win32.cc.
Referenced by squidaio_init(), and squidaio_shutdown().
|
static |
Definition at line 117 of file aiops_win32.cc.
Referenced by squidaio_init(), squidaio_poll_queues(), squidaio_queue_request(), squidaio_shutdown(), and squidaio_thread_loop().
| struct { ... } request_queue2 |
Referenced by squidaio_poll_queues(), and squidaio_queue_request().
|
static |
Definition at line 114 of file aiops_win32.cc.
Referenced by squidaio_get_queue_len(), squidaio_operations_pending(), squidaio_poll_queues(), squidaio_queue_request(), squidaio_shutdown(), and squidaio_sync().
|
static |
Definition at line 100 of file aiops_win32.cc.
Referenced by squidaio_init(), squidaio_shutdown(), and squidaio_stats().
|
static |
Definition at line 108 of file aiops_win32.cc.
Referenced by squidaio_get_pool(), and squidaio_init().
|
static |
Definition at line 109 of file aiops_win32.cc.
Referenced by squidaio_get_pool(), and squidaio_init().
|
static |
Definition at line 112 of file aiops_win32.cc.
Referenced by squidaio_get_pool(), and squidaio_init().
|
static |
Definition at line 115 of file aiops_win32.cc.
Referenced by squidaio_cleanup_request(), squidaio_close(), squidaio_init(), squidaio_open(), squidaio_read(), squidaio_stat(), squidaio_unlink(), and squidaio_write().
|
static |
Definition at line 110 of file aiops_win32.cc.
Referenced by squidaio_get_pool(), and squidaio_init().
|
static |
Definition at line 116 of file aiops_win32.cc.
Referenced by squidaio_init().
|
static |
Definition at line 111 of file aiops_win32.cc.
Referenced by squidaio_get_pool(), and squidaio_init().
| squidaio_request_t ** tailp |
Definition at line 120 of file aiops_win32.cc.
|
static |
Definition at line 99 of file aiops_win32.cc.
Referenced by squidaio_init(), squidaio_shutdown(), and squidaio_stats().