PostgreSQL Source Code git master
slru_io.h
Go to the documentation of this file.
1/*
2 * slru_io.h
3 *
4 * Copyright (c) 2025, PostgreSQL Global Development Group
5 * src/bin/pg_upgrade/slru_io.h
6 */
7
8#ifndef SLRU_IO_H
9#define SLRU_IO_H
10
11/*
12 * State for reading or writing an SLRU, with a one page buffer.
13 */
14typedef struct SlruSegState
15{
16 bool writing;
18
19 char *dir;
20 char *fn;
21 int fd;
24
27
28extern SlruSegState *AllocSlruRead(const char *dir, bool long_segment_names);
29extern char *SlruReadSwitchPageSlow(SlruSegState *state, uint64 pageno);
30extern void FreeSlruRead(SlruSegState *state);
31
32static inline char *
34{
35 if (state->segno != -1 && pageno == state->pageno)
36 return state->buf.data;
37 return SlruReadSwitchPageSlow(state, pageno);
38}
39
40extern SlruSegState *AllocSlruWrite(const char *dir, bool long_segment_names);
42extern void FreeSlruWrite(SlruSegState *state);
43
44static inline char *
46{
47 if (state->segno != -1 && pageno == state->pageno)
48 return state->buf.data;
49 return SlruWriteSwitchPageSlow(state, pageno);
50}
51
52#endif /* SLRU_IO_H */
int64_t int64
Definition: c.h:549
uint64_t uint64
Definition: c.h:553
static char * SlruReadSwitchPage(SlruSegState *state, uint64 pageno)
Definition: slru_io.h:33
char * SlruWriteSwitchPageSlow(SlruSegState *state, uint64 pageno)
Definition: slru_io.c:187
void FreeSlruWrite(SlruSegState *state)
Definition: slru_io.c:260
struct SlruSegState SlruSegState
static char * SlruWriteSwitchPage(SlruSegState *state, uint64 pageno)
Definition: slru_io.h:45
SlruSegState * AllocSlruWrite(const char *dir, bool long_segment_names)
Definition: slru_io.c:166
char * SlruReadSwitchPageSlow(SlruSegState *state, uint64 pageno)
Definition: slru_io.c:85
SlruSegState * AllocSlruRead(const char *dir, bool long_segment_names)
Definition: slru_io.c:62
void FreeSlruRead(SlruSegState *state)
Definition: slru_io.c:153
char * fn
Definition: slru_io.h:20
uint64 pageno
Definition: slru_io.h:23
char * dir
Definition: slru_io.h:19
int64 segno
Definition: slru_io.h:22
bool long_segment_names
Definition: slru_io.h:17
bool writing
Definition: slru_io.h:16
PGAlignedBlock buf
Definition: slru_io.h:25
Definition: regguts.h:323