diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/storage/aio.h | 38 | ||||
-rw-r--r-- | src/include/storage/aio_subsys.h | 33 | ||||
-rw-r--r-- | src/include/utils/guc.h | 1 | ||||
-rw-r--r-- | src/include/utils/guc_hooks.h | 2 | ||||
-rw-r--r-- | src/include/utils/resowner.h | 5 |
5 files changed, 79 insertions, 0 deletions
diff --git a/src/include/storage/aio.h b/src/include/storage/aio.h new file mode 100644 index 00000000000..e79d5343038 --- /dev/null +++ b/src/include/storage/aio.h @@ -0,0 +1,38 @@ +/*------------------------------------------------------------------------- + * + * aio.h + * Main AIO interface + * + * + * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/storage/aio.h + * + *------------------------------------------------------------------------- + */ +#ifndef AIO_H +#define AIO_H + + + +/* Enum for io_method GUC. */ +typedef enum IoMethod +{ + IOMETHOD_SYNC = 0, +} IoMethod; + +/* We'll default to synchronous execution. */ +#define DEFAULT_IO_METHOD IOMETHOD_SYNC + + +struct dlist_node; +extern void pgaio_io_release_resowner(struct dlist_node *ioh_node, bool on_error); + + +/* GUCs */ +extern PGDLLIMPORT int io_method; +extern PGDLLIMPORT int io_max_concurrency; + + +#endif /* AIO_H */ diff --git a/src/include/storage/aio_subsys.h b/src/include/storage/aio_subsys.h new file mode 100644 index 00000000000..2a6ca1c27a9 --- /dev/null +++ b/src/include/storage/aio_subsys.h @@ -0,0 +1,33 @@ +/*------------------------------------------------------------------------- + * + * aio_subsys.h + * Interaction with AIO as a subsystem, rather than actually issuing AIO + * + * This header is for AIO related functionality that's being called by files + * that don't perform AIO, but interact with the AIO subsystem in some + * form. E.g. postmaster.c and shared memory initialization need to initialize + * AIO but don't perform AIO. + * + * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/storage/aio_subsys.h + * + *------------------------------------------------------------------------- + */ +#ifndef AIO_SUBSYS_H +#define AIO_SUBSYS_H + + +/* aio_init.c */ +extern Size AioShmemSize(void); +extern void AioShmemInit(void); + +extern void pgaio_init_backend(void); + + +/* aio.c */ +extern void pgaio_error_cleanup(void); +extern void AtEOXact_Aio(bool is_commit); + +#endif /* AIO_SUBSYS_H */ diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h index 24444cbc365..f619100467d 100644 --- a/src/include/utils/guc.h +++ b/src/include/utils/guc.h @@ -318,6 +318,7 @@ extern PGDLLIMPORT bool optimize_bounded_sort; */ extern PGDLLIMPORT const struct config_enum_entry archive_mode_options[]; extern PGDLLIMPORT const struct config_enum_entry dynamic_shared_memory_options[]; +extern PGDLLIMPORT const struct config_enum_entry io_method_options[]; extern PGDLLIMPORT const struct config_enum_entry recovery_target_action_options[]; extern PGDLLIMPORT const struct config_enum_entry wal_level_options[]; extern PGDLLIMPORT const struct config_enum_entry wal_sync_method_options[]; diff --git a/src/include/utils/guc_hooks.h b/src/include/utils/guc_hooks.h index 9a0d8ec85c7..a3eba8fbe21 100644 --- a/src/include/utils/guc_hooks.h +++ b/src/include/utils/guc_hooks.h @@ -64,6 +64,8 @@ extern bool check_default_with_oids(bool *newval, void **extra, extern bool check_effective_io_concurrency(int *newval, void **extra, GucSource source); extern bool check_huge_page_size(int *newval, void **extra, GucSource source); +extern void assign_io_method(int newval, void *extra); +extern bool check_io_max_concurrency(int *newval, void **extra, GucSource source); extern const char *show_in_hot_standby(void); extern bool check_locale_messages(char **newval, void **extra, GucSource source); extern void assign_locale_messages(const char *newval, void *extra); diff --git a/src/include/utils/resowner.h b/src/include/utils/resowner.h index e8d452ca7ee..aede4bfc820 100644 --- a/src/include/utils/resowner.h +++ b/src/include/utils/resowner.h @@ -164,4 +164,9 @@ struct LOCALLOCK; extern void ResourceOwnerRememberLock(ResourceOwner owner, struct LOCALLOCK *locallock); extern void ResourceOwnerForgetLock(ResourceOwner owner, struct LOCALLOCK *locallock); +/* special support for AIO */ +struct dlist_node; +extern void ResourceOwnerRememberAioHandle(ResourceOwner owner, struct dlist_node *ioh_node); +extern void ResourceOwnerForgetAioHandle(ResourceOwner owner, struct dlist_node *ioh_node); + #endif /* RESOWNER_H */ |