]> git.ipfire.org Git - thirdparty/squid.git/blame - src/DiskIO/DiskThreads/DiskThreads.h
Updates for running on squid-cache.org
[thirdparty/squid.git] / src / DiskIO / DiskThreads / DiskThreads.h
CommitLineData
cd748f27 1/*
b9ae18aa 2 * DiskThreads.h
cd748f27 3 *
b9ae18aa 4 * Internal declarations for the DiskThreads routines
cd748f27 5 */
6
b9ae18aa 7#ifndef __DISKTHREADS_H__
8#define __DISKTHREADS_H__
cd748f27 9
f85c88f3 10#ifdef AUFS_IO_THREADS
11#define NUMTHREADS AUFS_IO_THREADS
cd748f27 12#else
55f0e6f7 13#define NUMTHREADS (Config.cacheSwap.n_configured*16)
cd748f27 14#endif
15
55f0e6f7 16/* Queue limit where swapouts are deferred (load calculation) */
17#define MAGIC1 (NUMTHREADS*Config.cacheSwap.n_configured*5)
18/* Queue limit where swapins are deferred (open/create fails) */
19#define MAGIC2 (NUMTHREADS*Config.cacheSwap.n_configured*20)
20
21/* Which operations to run async */
22#define ASYNC_OPEN 1
23#define ASYNC_CLOSE 0
24#define ASYNC_CREATE 1
25#define ASYNC_WRITE 0
26#define ASYNC_READ 1
cd748f27 27
12e137b0 28enum _squidaio_request_type {
29 _AIO_OP_NONE = 0,
30 _AIO_OP_OPEN,
31 _AIO_OP_READ,
32 _AIO_OP_WRITE,
33 _AIO_OP_CLOSE,
34 _AIO_OP_UNLINK,
12e137b0 35 _AIO_OP_OPENDIR,
36 _AIO_OP_STAT
37};
38typedef enum _squidaio_request_type squidaio_request_type;
39
b9ae18aa 40typedef void AIOCB(int fd, void *cbdata, const char *buf, int aio_return, int aio_errno);
41
42struct squidaio_result_t
62e76326 43{
cd748f27 44 int aio_return;
45 int aio_errno;
12e137b0 46 enum _squidaio_request_type result_type;
f0debecb 47 void *_data; /* Internal housekeeping */
48 void *data; /* Available to the caller */
cd748f27 49};
50
b9ae18aa 51struct squidaio_ctrl_t
52{
cd748f27 53
b9ae18aa 54 struct squidaio_ctrl_t *next;
55 int fd;
56 int operation;
57 AIOCB *done_handler;
58 void *done_handler_data;
59 squidaio_result_t result;
60 int len;
61 char *bufp;
62 FREE *free_func;
63 dlink_node node;
64};
cd748f27 65
d06925a4 66void squidaio_init(void);
67void squidaio_shutdown(void);
c04d4f40 68int squidaio_cancel(squidaio_result_t *);
69int squidaio_open(const char *, int, mode_t, squidaio_result_t *);
ee139403 70int squidaio_read(int, char *, size_t, off_t, int, squidaio_result_t *);
71int squidaio_write(int, char *, size_t, off_t, int, squidaio_result_t *);
c04d4f40 72int squidaio_close(int, squidaio_result_t *);
62e76326 73
c04d4f40 74int squidaio_stat(const char *, struct stat *, squidaio_result_t *);
75int squidaio_unlink(const char *, squidaio_result_t *);
c04d4f40 76int squidaio_opendir(const char *, squidaio_result_t *);
77squidaio_result_t *squidaio_poll_done(void);
78int squidaio_operations_pending(void);
79int squidaio_sync(void);
80int squidaio_get_queue_len(void);
211f1d0b 81void *squidaio_xmalloc(int size);
82void squidaio_xfree(void *p, int size);
b0465494 83void squidaio_stats(StoreEntry *);
cd748f27 84
85void aioInit(void);
86void aioDone(void);
a4b8110e 87void aioCancel(int);
88void aioOpen(const char *, int, mode_t, AIOCB *, void *);
cd748f27 89void aioClose(int);
ee139403 90void aioWrite(int, off_t offset, char *, size_t size, AIOCB *, void *, FREE *);
91void aioRead(int, off_t offset, size_t size, AIOCB *, void *);
62e76326 92
cd748f27 93void aioStat(char *, struct stat *, AIOCB *, void *);
94void aioUnlink(const char *, AIOCB *, void *);
a4b8110e 95int aioQueueSize(void);
cd748f27 96
b9ae18aa 97#include "DiskIO/DiskFile.h"
d3b3ab85 98
b9ae18aa 99class DiskThreadsIOStrategy;
62e76326 100
b9ae18aa 101struct AIOCounts
62e76326 102{
b9ae18aa 103 int open_start;
104 int open_finish;
105 int close_start;
106 int close_finish;
107 int cancel;
108 int write_start;
109 int write_finish;
110 int read_start;
111 int read_finish;
112 int stat_start;
113 int stat_finish;
114 int unlink_start;
115 int unlink_finish;
116 int check_callback;
d3b3ab85 117};
118
b9ae18aa 119extern AIOCounts squidaio_counts;
120extern dlink_list used_list;
cd748f27 121
59b2d47f 122
cd748f27 123#endif