40#define CALLBACK_ENTRY(id, callback) [id] = {.cb = &callback, .name = #callback}
93 elog(
ERROR,
"callback %d is out of range", cb_id);
96 elog(
ERROR,
"callback %d does not have a completion callback", cb_id);
98 elog(
PANIC,
"too many callbacks, the max is %d",
104 "adding cb #%d, id %d/%s",
128 for (
int i = 0;
i <
len;
i++)
145 for (
int i = 0;
i <
len;
i++)
180 elog(
ERROR,
"callback %d/%s does not have report callback",
183 ce->
cb->
report(result, target_data, elevel);
212 "calling cb #%d %d/%s->stage(%u)",
213 i, cb_id, ce->
name, cb_data);
251 "calling cb #%d, id %d/%s->complete_shared(%u) with distilled result: (status %s, id %u, error_data %d, result %d)",
262 "after shared completion: distilled result: (status %s, id %u, error_data: %d, result %d), raw_result: %d",
302 "calling cb #%d, id %d/%s->complete_local(%u) with distilled result: status %s, id %u, error_data %d, result %d",
303 i, cb_id, ce->
name, cb_data,
316 "after local completion: result: (status %s, id %u, error_data %d, result %d), raw_result: %d",
const char * pgaio_result_status_string(PgAioResultStatus rs)
@ PGAIO_HCB_LOCAL_BUFFER_READV
@ PGAIO_HCB_SHARED_BUFFER_READV
#define PGAIO_HANDLE_MAX_CALLBACKS
void pgaio_io_call_stage(PgAioHandle *ioh)
static const PgAioHandleCallbacksEntry aio_handle_cbs[]
void pgaio_io_set_handle_data_32(PgAioHandle *ioh, uint32 *data, uint8 len)
PgAioResult pgaio_io_call_complete_local(PgAioHandle *ioh)
void pgaio_io_register_callbacks(PgAioHandle *ioh, PgAioHandleCallbackID cb_id, uint8 cb_data)
void pgaio_io_call_complete_shared(PgAioHandle *ioh)
uint64 * pgaio_io_get_handle_data(PgAioHandle *ioh, uint8 *len)
void pgaio_io_set_handle_data_64(PgAioHandle *ioh, uint64 *data, uint8 len)
static const PgAioHandleCallbacks aio_invalid_cb
struct PgAioHandleCallbacksEntry PgAioHandleCallbacksEntry
#define CALLBACK_ENTRY(id, callback)
void pgaio_result_report(PgAioResult result, const PgAioTargetData *target_data, int elevel)
#define pgaio_debug_io(elevel, ioh, msg,...)
const PgAioHandleCallbacks aio_shared_buffer_readv_cb
const PgAioHandleCallbacks aio_local_buffer_readv_cb
Assert(PointerIsAligned(start, uint64))
const PgAioHandleCallbacks aio_md_readv_cb
#define START_CRIT_SECTION()
#define END_CRIT_SECTION()
const PgAioHandleCallbacks *const cb
PgAioHandleCallbackComplete complete_shared
PgAioHandleCallbackStage stage
PgAioHandleCallbackReport report
PgAioHandleCallbackComplete complete_local
PgAioResult distilled_result
uint8 callbacks[PGAIO_HANDLE_MAX_CALLBACKS]
uint8 callbacks_data[PGAIO_HANDLE_MAX_CALLBACKS]