PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
aio_target.c File Reference
#include "postgres.h"
#include "storage/aio.h"
#include "storage/aio_internal.h"
Include dependency graph for aio_target.c:

Go to the source code of this file.

Functions

bool pgaio_io_has_target (PgAioHandle *ioh)
 
const char * pgaio_io_get_target_name (PgAioHandle *ioh)
 
void pgaio_io_set_target (PgAioHandle *ioh, PgAioTargetID targetid)
 
PgAioTargetDatapgaio_io_get_target_data (PgAioHandle *ioh)
 
char * pgaio_io_get_target_description (PgAioHandle *ioh)
 
bool pgaio_io_can_reopen (PgAioHandle *ioh)
 
void pgaio_io_reopen (PgAioHandle *ioh)
 

Variables

static const PgAioTargetInfopgaio_target_info []
 

Function Documentation

◆ pgaio_io_can_reopen()

bool pgaio_io_can_reopen ( PgAioHandle ioh)

Definition at line 97 of file aio_target.c.

98{
99 return pgaio_target_info[ioh->target]->reopen != NULL;
100}
static const PgAioTargetInfo * pgaio_target_info[]
Definition: aio_target.c:24
PgAioTargetID target
Definition: aio_internal.h:97
void(* reopen)(PgAioHandle *ioh)
Definition: aio.h:155

References pgaio_target_info, PgAioTargetInfo::reopen, and PgAioHandle::target.

Referenced by pgaio_worker_needs_synchronous_execution().

◆ pgaio_io_get_target_data()

PgAioTargetData * pgaio_io_get_target_data ( PgAioHandle ioh)

Definition at line 70 of file aio_target.c.

71{
72 return &ioh->target_data;
73}
PgAioTargetData target_data
Definition: aio_internal.h:176

References PgAioHandle::target_data.

◆ pgaio_io_get_target_description()

char * pgaio_io_get_target_description ( PgAioHandle ioh)

Definition at line 81 of file aio_target.c.

82{
84}
char *(* describe_identity)(const PgAioTargetData *sd)
Definition: aio.h:158

References PgAioTargetInfo::describe_identity, pgaio_target_info, PgAioHandle::target, and PgAioHandle::target_data.

◆ pgaio_io_get_target_name()

const char * pgaio_io_get_target_name ( PgAioHandle ioh)

Definition at line 48 of file aio_target.c.

49{
50 Assert(ioh->target >= 0 && ioh->target < PGAIO_TID_COUNT);
51
52 return pgaio_target_info[ioh->target]->name;
53}
#define PGAIO_TID_COUNT
Definition: aio.h:114
Assert(PointerIsAligned(start, uint64))
const char * name
Definition: aio.h:161

References Assert(), PgAioTargetInfo::name, pgaio_target_info, PGAIO_TID_COUNT, and PgAioHandle::target.

◆ pgaio_io_has_target()

bool pgaio_io_has_target ( PgAioHandle ioh)

Definition at line 38 of file aio_target.c.

39{
40 return ioh->target != PGAIO_TID_INVALID;
41}
@ PGAIO_TID_INVALID
Definition: aio.h:111

References PGAIO_TID_INVALID, and PgAioHandle::target.

Referenced by pgaio_io_before_prep(), and pgaio_io_stage().

◆ pgaio_io_reopen()

void pgaio_io_reopen ( PgAioHandle ioh)

Definition at line 108 of file aio_target.c.

109{
110 Assert(ioh->target >= 0 && ioh->target < PGAIO_TID_COUNT);
111 Assert(ioh->op >= 0 && ioh->op < PGAIO_OP_COUNT);
112
113 pgaio_target_info[ioh->target]->reopen(ioh);
114}
#define PGAIO_OP_COUNT
Definition: aio.h:99
PgAioOp op
Definition: aio_internal.h:100

References Assert(), PgAioHandle::op, PGAIO_OP_COUNT, pgaio_target_info, PGAIO_TID_COUNT, PgAioTargetInfo::reopen, and PgAioHandle::target.

Referenced by IoWorkerMain().

◆ pgaio_io_set_target()

void pgaio_io_set_target ( PgAioHandle ioh,
PgAioTargetID  targetid 
)

Definition at line 61 of file aio_target.c.

62{
65
66 ioh->target = targetid;
67}
@ PGAIO_HS_HANDED_OUT
Definition: aio_internal.h:48
PgAioHandleState state
Definition: aio_internal.h:94

References Assert(), PGAIO_HS_HANDED_OUT, PGAIO_TID_INVALID, PgAioHandle::state, and PgAioHandle::target.

Variable Documentation

◆ pgaio_target_info

const PgAioTargetInfo* pgaio_target_info[]
static
Initial value:
= {
.name = "invalid",
},
}
struct PgAioTargetInfo PgAioTargetInfo
Definition: aio_types.h:24

Definition at line 24 of file aio_target.c.

Referenced by pgaio_io_can_reopen(), pgaio_io_get_target_description(), pgaio_io_get_target_name(), and pgaio_io_reopen().