]>
Commit | Line | Data |
---|---|---|
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 | 28 | enum _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 | }; | |
38 | typedef enum _squidaio_request_type squidaio_request_type; | |
39 | ||
b9ae18aa | 40 | typedef void AIOCB(int fd, void *cbdata, const char *buf, int aio_return, int aio_errno); |
41 | ||
42 | struct 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 | 51 | struct 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 | 66 | void squidaio_init(void); |
67 | void squidaio_shutdown(void); | |
c04d4f40 | 68 | int squidaio_cancel(squidaio_result_t *); |
69 | int squidaio_open(const char *, int, mode_t, squidaio_result_t *); | |
ee139403 | 70 | int squidaio_read(int, char *, size_t, off_t, int, squidaio_result_t *); |
71 | int squidaio_write(int, char *, size_t, off_t, int, squidaio_result_t *); | |
c04d4f40 | 72 | int squidaio_close(int, squidaio_result_t *); |
62e76326 | 73 | |
c04d4f40 | 74 | int squidaio_stat(const char *, struct stat *, squidaio_result_t *); |
75 | int squidaio_unlink(const char *, squidaio_result_t *); | |
c04d4f40 | 76 | int squidaio_opendir(const char *, squidaio_result_t *); |
77 | squidaio_result_t *squidaio_poll_done(void); | |
78 | int squidaio_operations_pending(void); | |
79 | int squidaio_sync(void); | |
80 | int squidaio_get_queue_len(void); | |
211f1d0b | 81 | void *squidaio_xmalloc(int size); |
82 | void squidaio_xfree(void *p, int size); | |
b0465494 | 83 | void squidaio_stats(StoreEntry *); |
cd748f27 | 84 | |
85 | void aioInit(void); | |
86 | void aioDone(void); | |
a4b8110e | 87 | void aioCancel(int); |
88 | void aioOpen(const char *, int, mode_t, AIOCB *, void *); | |
cd748f27 | 89 | void aioClose(int); |
ee139403 | 90 | void aioWrite(int, off_t offset, char *, size_t size, AIOCB *, void *, FREE *); |
91 | void aioRead(int, off_t offset, size_t size, AIOCB *, void *); | |
62e76326 | 92 | |
cd748f27 | 93 | void aioStat(char *, struct stat *, AIOCB *, void *); |
94 | void aioUnlink(const char *, AIOCB *, void *); | |
a4b8110e | 95 | int aioQueueSize(void); |
cd748f27 | 96 | |
b9ae18aa | 97 | #include "DiskIO/DiskFile.h" |
d3b3ab85 | 98 | |
b9ae18aa | 99 | class DiskThreadsIOStrategy; |
62e76326 | 100 | |
b9ae18aa | 101 | struct 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 | 119 | extern AIOCounts squidaio_counts; |
120 | extern dlink_list used_list; | |
cd748f27 | 121 | |
59b2d47f | 122 | |
cd748f27 | 123 | #endif |