PostgreSQL Source Code: src/backend/storage/aio/aio_init.c Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
16
27
28
29
32{
34
35
36 sz = offsetof(PgAioCtl, io_handles);
37
38 return sz;
39}
40
43{
44
45
46
47
48
50}
51
54{
56}
57
60{
62
63
65
66
69
70 return sz;
71}
72
75{
76
77 return mul_size(sizeof(struct iovec),
80}
81
84{
85
89}
90
91
92
93
94
95
96
97
98
99
100static int
102{
104 int max_proportional_pins;
105
106
108 max_proportional_pins = NBuffers / max_backends;
109
110 max_proportional_pins = Max(max_proportional_pins, 1);
111
112
113 return Min(max_proportional_pins, 64);
114}
115
118{
120
121
122
123
124
125
126
128 {
129 char buf[32];
130
137 }
138
144
145
148
149 return sz;
150}
151
152void
154{
155 bool found;
156 uint32 io_handle_off = 0;
157 uint32 iovec_off = 0;
159
162
163 if (found)
164 goto out;
165
167
170
173
176
181
182 for (int procno = 0; procno < AioProcs(); procno++)
183 {
185
188
192
193
195 {
197
207
209
212 }
213 }
214
215out:
216
219}
220
221void
223{
224
226
228 return;
229
231 elog(ERROR, "aio requires a normal PGPROC");
232
234
237
239}
PgAioBackend * pgaio_my_backend
const IoMethodOps * pgaio_method_ops
void pgaio_shutdown(int code, Datum arg)
static Size AioHandleIOVShmemSize(void)
void pgaio_init_backend(void)
static Size AioHandleDataShmemSize(void)
static Size AioHandleShmemSize(void)
static Size AioBackendShmemSize(void)
static int AioChooseMaxConcurrency(void)
static uint32 AioProcs(void)
static Size AioCtlShmemSize(void)
#define PGAIO_SUBMIT_BATCH_SIZE
void ConditionVariableInit(ConditionVariable *cv)
void SetConfigOption(const char *name, const char *value, GucContext context, GucSource source)
Assert(PointerIsAligned(start, uint64))
static void dclist_push_tail(dclist_head *head, dlist_node *node)
static void dclist_init(dclist_head *head)
void before_shmem_exit(pg_on_exit_callback function, Datum arg)
BackendType MyBackendType
#define NUM_AUXILIARY_PROCS
Size add_size(Size s1, Size s2)
Size mul_size(Size s1, Size s2)
void * ShmemInitStruct(const char *name, Size size, bool *foundPtr)
size_t(* shmem_size)(void)
void(* shmem_init)(bool first_time)
void(* init_backend)(void)
dclist_head in_flight_ios
PgAioHandle * staged_ios[PGAIO_SUBMIT_BATCH_SIZE]
PgAioBackend * backend_state
struct ResourceOwnerData * resowner
PgAioResult distilled_result
PgAioReturn * report_return