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