From d89312042eb76c879d699380a5e2ed0bc7956605 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sun, 16 Jun 2024 23:52:06 +0200 Subject: [PATCH v2 05/10] Fix warnings from -Wmissing-variable-declarations under EXEC_BACKEND The NON_EXEC_STATIC variables need a suitable declaration in a header file under EXEC_BACKEND. Also fix the inconsistent application of the volatile qualifier for PMSignalState, which was revealed by this change. Discussion: https://www.postgresql.org/message-id/flat/e0a62134-83da-4ba4-8cdb-ceb0111c95ce@eisentraut.org --- src/backend/postmaster/launch_backend.c | 12 +----------- src/include/postmaster/postmaster.h | 4 ++++ src/include/postmaster/syslogger.h | 4 ++++ src/include/storage/pmsignal.h | 4 ++++ src/include/storage/proc.h | 5 +++++ 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/backend/postmaster/launch_backend.c b/src/backend/postmaster/launch_backend.c index 49e4be4b399..2b1515043dc 100644 --- a/src/backend/postmaster/launch_backend.c +++ b/src/backend/postmaster/launch_backend.c @@ -114,7 +114,7 @@ typedef struct PROC_HDR *ProcGlobal; PGPROC *AuxiliaryProcs; PGPROC *PreparedXactProcs; - PMSignalData *PMSignalState; + volatile PMSignalData *PMSignalState; pid_t PostmasterPid; TimestampTz PgStartTime; TimestampTz PgReloadTime; @@ -668,16 +668,6 @@ SubPostmasterMain(int argc, char *argv[]) pg_unreachable(); /* main_fn never returns */ } -/* - * The following need to be available to the save/restore_backend_variables - * functions. They are marked NON_EXEC_STATIC in their home modules. - */ -extern slock_t *ProcStructLock; -extern PGPROC *AuxiliaryProcs; -extern PMSignalData *PMSignalState; -extern pg_time_t first_syslogger_file_time; -extern struct bkend *ShmemBackendArray; - #ifndef WIN32 #define write_inheritable_socket(dest, src, childpid) ((*(dest) = (src)), true) #define read_inheritable_socket(dest, src) (*(dest) = *(src)) diff --git a/src/include/postmaster/postmaster.h b/src/include/postmaster/postmaster.h index 9feb2e4de14..d19e103937d 100644 --- a/src/include/postmaster/postmaster.h +++ b/src/include/postmaster/postmaster.h @@ -36,6 +36,10 @@ extern PGDLLIMPORT bool remove_temp_files_after_crash; extern PGDLLIMPORT bool send_abort_for_crash; extern PGDLLIMPORT bool send_abort_for_kill; +#ifdef EXEC_BACKEND +extern struct bkend *ShmemBackendArray; +#endif + #ifdef WIN32 extern PGDLLIMPORT HANDLE PostmasterHandle; #else diff --git a/src/include/postmaster/syslogger.h b/src/include/postmaster/syslogger.h index 0f28ebcba55..b5fc239ba9c 100644 --- a/src/include/postmaster/syslogger.h +++ b/src/include/postmaster/syslogger.h @@ -75,6 +75,10 @@ extern PGDLLIMPORT char *Log_filename; extern PGDLLIMPORT bool Log_truncate_on_rotation; extern PGDLLIMPORT int Log_file_mode; +#ifdef EXEC_BACKEND +extern pg_time_t first_syslogger_file_time; +#endif + #ifndef WIN32 extern PGDLLIMPORT int syslogPipe[2]; #else diff --git a/src/include/storage/pmsignal.h b/src/include/storage/pmsignal.h index 029b7201093..0c9a7e32a8a 100644 --- a/src/include/storage/pmsignal.h +++ b/src/include/storage/pmsignal.h @@ -57,6 +57,10 @@ typedef enum /* PMSignalData is an opaque struct, details known only within pmsignal.c */ typedef struct PMSignalData PMSignalData; +#ifdef EXEC_BACKEND +extern volatile PMSignalData *PMSignalState; +#endif + /* * prototypes for functions in pmsignal.c */ diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h index 9488bf1857c..987a6e60772 100644 --- a/src/include/storage/proc.h +++ b/src/include/storage/proc.h @@ -454,6 +454,11 @@ extern PGDLLIMPORT int TransactionTimeout; extern PGDLLIMPORT int IdleSessionTimeout; extern PGDLLIMPORT bool log_lock_waits; +#ifdef EXEC_BACKEND +extern slock_t *ProcStructLock; +extern PGPROC *AuxiliaryProcs; +#endif + /* * Function Prototypes -- 2.45.2