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 "storage/smgr.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 99 of file aio_target.c.

100{
101 return pgaio_target_info[ioh->target]->reopen != NULL;
102}
static const PgAioTargetInfo * pgaio_target_info[]
Definition: aio_target.c:25
PgAioTargetID target
Definition: aio_internal.h:102
void(* reopen)(PgAioHandle *ioh)
Definition: aio.h:164

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)

◆ pgaio_io_get_target_description()

char * pgaio_io_get_target_description ( PgAioHandle ioh)

Definition at line 83 of file aio_target.c.

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

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

Referenced by pg_get_aios().

◆ pgaio_io_get_target_name()

const char * pgaio_io_get_target_name ( PgAioHandle ioh)

Definition at line 50 of file aio_target.c.

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

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

Referenced by pg_get_aios().

◆ pgaio_io_has_target()

bool pgaio_io_has_target ( PgAioHandle ioh)

Definition at line 40 of file aio_target.c.

41{
42 return ioh->target != PGAIO_TID_INVALID;
43}
@ PGAIO_TID_INVALID
Definition: aio.h:119

References PGAIO_TID_INVALID, and PgAioHandle::target.

Referenced by pgaio_io_before_start(), and pgaio_io_stage().

◆ pgaio_io_reopen()

void pgaio_io_reopen ( PgAioHandle ioh)

Definition at line 110 of file aio_target.c.

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

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 63 of file aio_target.c.

64{
67
68 ioh->target = targetid;
69}
@ PGAIO_HS_HANDED_OUT
Definition: aio_internal.h:53
PgAioHandleState state
Definition: aio_internal.h:99

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

Referenced by pgaio_io_set_target_smgr().

Variable Documentation

◆ pgaio_target_info

const PgAioTargetInfo* pgaio_target_info[]
static
Initial value:
= {
.name = "invalid",
},
}
@ PGAIO_TID_SMGR
Definition: aio.h:120
struct PgAioTargetInfo PgAioTargetInfo
Definition: aio_types.h:24
const PgAioTargetInfo aio_smgr_target_info
Definition: smgr.c:172

Definition at line 25 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().