From 228a9e1b18b95585829718c19376f8d1dde1d541 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Tue, 24 Sep 2024 12:26:48 +0200 Subject: [PATCH 05/10] backend launchers void * arguments for binary data Change backend launcher functions to take void * for binary data instead of char *. This removes the need for numerous casts. --- src/backend/postmaster/autovacuum.c | 4 ++-- src/backend/postmaster/bgworker.c | 2 +- src/backend/postmaster/bgwriter.c | 2 +- src/backend/postmaster/checkpointer.c | 2 +- src/backend/postmaster/launch_backend.c | 20 ++++++++++---------- src/backend/postmaster/pgarch.c | 2 +- src/backend/postmaster/postmaster.c | 4 ++-- src/backend/postmaster/startup.c | 2 +- src/backend/postmaster/syslogger.c | 6 +++--- src/backend/postmaster/walsummarizer.c | 2 +- src/backend/postmaster/walwriter.c | 2 +- src/backend/replication/logical/slotsync.c | 2 +- src/backend/replication/walreceiver.c | 2 +- src/backend/tcop/backend_startup.c | 4 ++-- src/include/postmaster/autovacuum.h | 4 ++-- src/include/postmaster/bgworker_internals.h | 2 +- src/include/postmaster/bgwriter.h | 4 ++-- src/include/postmaster/pgarch.h | 2 +- src/include/postmaster/postmaster.h | 2 +- src/include/postmaster/startup.h | 2 +- src/include/postmaster/syslogger.h | 2 +- src/include/postmaster/walsummarizer.h | 2 +- src/include/postmaster/walwriter.h | 2 +- src/include/replication/slotsync.h | 2 +- src/include/replication/walreceiver.h | 2 +- src/include/tcop/backend_startup.h | 2 +- 26 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index 0ab921a169b..d82b66d75ce 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -363,7 +363,7 @@ static void check_av_worker_gucs(void); * Main entry point for the autovacuum launcher process. */ void -AutoVacLauncherMain(char *startup_data, size_t startup_data_len) +AutoVacLauncherMain(const void *startup_data, size_t startup_data_len) { sigjmp_buf local_sigjmp_buf; @@ -1370,7 +1370,7 @@ avl_sigusr2_handler(SIGNAL_ARGS) * Main entry point for autovacuum worker processes. */ void -AutoVacWorkerMain(char *startup_data, size_t startup_data_len) +AutoVacWorkerMain(const void *startup_data, size_t startup_data_len) { sigjmp_buf local_sigjmp_buf; Oid dbid; diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c index b288915cec8..116ddf7b835 100644 --- a/src/backend/postmaster/bgworker.c +++ b/src/backend/postmaster/bgworker.c @@ -714,7 +714,7 @@ bgworker_die(SIGNAL_ARGS) * Main entry point for background worker processes. */ void -BackgroundWorkerMain(char *startup_data, size_t startup_data_len) +BackgroundWorkerMain(const void *startup_data, size_t startup_data_len) { sigjmp_buf local_sigjmp_buf; BackgroundWorker *worker; diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c index 3eff5dc6f0e..64524d1831b 100644 --- a/src/backend/postmaster/bgwriter.c +++ b/src/backend/postmaster/bgwriter.c @@ -84,7 +84,7 @@ static XLogRecPtr last_snapshot_lsn = InvalidXLogRecPtr; * basic execution environment, but not enabled signals yet. */ void -BackgroundWriterMain(char *startup_data, size_t startup_data_len) +BackgroundWriterMain(const void *startup_data, size_t startup_data_len) { sigjmp_buf local_sigjmp_buf; MemoryContext bgwriter_context; diff --git a/src/backend/postmaster/checkpointer.c b/src/backend/postmaster/checkpointer.c index b94f9cdff21..7acbbd3e267 100644 --- a/src/backend/postmaster/checkpointer.c +++ b/src/backend/postmaster/checkpointer.c @@ -175,7 +175,7 @@ static void ReqShutdownXLOG(SIGNAL_ARGS); * basic execution environment, but not enabled signals yet. */ void -CheckpointerMain(char *startup_data, size_t startup_data_len) +CheckpointerMain(const void *startup_data, size_t startup_data_len) { sigjmp_buf local_sigjmp_buf; MemoryContext checkpointer_context; diff --git a/src/backend/postmaster/launch_backend.c b/src/backend/postmaster/launch_backend.c index a97a1eda6da..47375e5bfaa 100644 --- a/src/backend/postmaster/launch_backend.c +++ b/src/backend/postmaster/launch_backend.c @@ -149,7 +149,7 @@ typedef struct #define SizeOfBackendParameters(startup_data_len) (offsetof(BackendParameters, startup_data) + startup_data_len) -static void read_backend_variables(char *id, char **startup_data, size_t *startup_data_len); +static void read_backend_variables(char *id, void **startup_data, size_t *startup_data_len); static void restore_backend_variables(BackendParameters *param); static bool save_backend_variables(BackendParameters *param, int child_slot, @@ -157,10 +157,10 @@ static bool save_backend_variables(BackendParameters *param, int child_slot, #ifdef WIN32 HANDLE childProcess, pid_t childPid, #endif - char *startup_data, size_t startup_data_len); + const void *startup_data, size_t startup_data_len); static pid_t internal_forkexec(const char *child_kind, int child_slot, - char *startup_data, size_t startup_data_len, + const void *startup_data, size_t startup_data_len, ClientSocket *client_sock); #endif /* EXEC_BACKEND */ @@ -171,7 +171,7 @@ static pid_t internal_forkexec(const char *child_kind, int child_slot, typedef struct { const char *name; - void (*main_fn) (char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); + void (*main_fn) (const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); bool shmem_attach; } child_process_kind; @@ -225,7 +225,7 @@ PostmasterChildName(BackendType child_type) */ pid_t postmaster_child_launch(BackendType child_type, int child_slot, - char *startup_data, size_t startup_data_len, + const void *startup_data, size_t startup_data_len, ClientSocket *client_sock) { pid_t pid; @@ -289,7 +289,7 @@ postmaster_child_launch(BackendType child_type, int child_slot, */ static pid_t internal_forkexec(const char *child_kind, int child_slot, - char *startup_data, size_t startup_data_len, ClientSocket *client_sock) + const void *startup_data, size_t startup_data_len, ClientSocket *client_sock) { static unsigned long tmpBackendFileNum = 0; pid_t pid; @@ -399,7 +399,7 @@ internal_forkexec(const char *child_kind, int child_slot, */ static pid_t internal_forkexec(const char *child_kind, int child_slot, - char *startup_data, size_t startup_data_len, ClientSocket *client_sock) + const void *startup_data, size_t startup_data_len, ClientSocket *client_sock) { int retry_count = 0; STARTUPINFO si; @@ -581,7 +581,7 @@ internal_forkexec(const char *child_kind, int child_slot, void SubPostmasterMain(int argc, char *argv[]) { - char *startup_data; + void *startup_data; size_t startup_data_len; char *child_kind; BackendType child_type; @@ -699,7 +699,7 @@ save_backend_variables(BackendParameters *param, #ifdef WIN32 HANDLE childProcess, pid_t childPid, #endif - char *startup_data, size_t startup_data_len) + const void *startup_data, size_t startup_data_len) { if (client_sock) memcpy(¶m->client_sock, client_sock, sizeof(ClientSocket)); @@ -867,7 +867,7 @@ read_inheritable_socket(SOCKET *dest, InheritableSocket *src) #endif static void -read_backend_variables(char *id, char **startup_data, size_t *startup_data_len) +read_backend_variables(char *id, void **startup_data, size_t *startup_data_len) { BackendParameters param; diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c index 12ee815a626..e6cd78679ce 100644 --- a/src/backend/postmaster/pgarch.c +++ b/src/backend/postmaster/pgarch.c @@ -214,7 +214,7 @@ PgArchCanRestart(void) /* Main entry point for archiver process */ void -PgArchiverMain(char *startup_data, size_t startup_data_len) +PgArchiverMain(const void *startup_data, size_t startup_data_len) { Assert(startup_data_len == 0); diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index bb22b13adef..5dd3b6a4fd4 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -3517,7 +3517,7 @@ BackendStartup(ClientSocket *client_sock) bn->bgworker_notify = false; pid = postmaster_child_launch(bn->bkend_type, bn->child_slot, - (char *) &startup_data, sizeof(startup_data), + &startup_data, sizeof(startup_data), client_sock); if (pid < 0) { @@ -4080,7 +4080,7 @@ StartBackgroundWorker(RegisteredBgWorker *rw) rw->rw_worker.bgw_name))); worker_pid = postmaster_child_launch(B_BG_WORKER, bn->child_slot, - (char *) &rw->rw_worker, sizeof(BackgroundWorker), NULL); + &rw->rw_worker, sizeof(BackgroundWorker), NULL); if (worker_pid == -1) { /* in postmaster, fork failed ... */ diff --git a/src/backend/postmaster/startup.c b/src/backend/postmaster/startup.c index 59d213031b3..88eab3d0baf 100644 --- a/src/backend/postmaster/startup.c +++ b/src/backend/postmaster/startup.c @@ -213,7 +213,7 @@ StartupProcExit(int code, Datum arg) * ---------------------------------- */ void -StartupProcessMain(char *startup_data, size_t startup_data_len) +StartupProcessMain(const void *startup_data, size_t startup_data_len) { Assert(startup_data_len == 0); diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c index 7e9b3f2a0fd..50c2edec1f6 100644 --- a/src/backend/postmaster/syslogger.c +++ b/src/backend/postmaster/syslogger.c @@ -162,7 +162,7 @@ typedef struct * argc/argv parameters are valid only in EXEC_BACKEND case. */ void -SysLoggerMain(char *startup_data, size_t startup_data_len) +SysLoggerMain(const void *startup_data, size_t startup_data_len) { #ifndef WIN32 char logbuffer[READ_BUF_SIZE]; @@ -183,7 +183,7 @@ SysLoggerMain(char *startup_data, size_t startup_data_len) */ #ifdef EXEC_BACKEND { - SysloggerStartupData *slsdata = (SysloggerStartupData *) startup_data; + const SysloggerStartupData *slsdata = startup_data; Assert(startup_data_len == sizeof(*slsdata)); syslogFile = syslogger_fdopen(slsdata->syslogFile); @@ -699,7 +699,7 @@ SysLogger_Start(int child_slot) startup_data.csvlogFile = syslogger_fdget(csvlogFile); startup_data.jsonlogFile = syslogger_fdget(jsonlogFile); sysloggerPid = postmaster_child_launch(B_LOGGER, child_slot, - (char *) &startup_data, sizeof(startup_data), NULL); + &startup_data, sizeof(startup_data), NULL); #else sysloggerPid = postmaster_child_launch(B_LOGGER, child_slot, NULL, 0, NULL); diff --git a/src/backend/postmaster/walsummarizer.c b/src/backend/postmaster/walsummarizer.c index ffbf0439358..f4d61c1f3bb 100644 --- a/src/backend/postmaster/walsummarizer.c +++ b/src/backend/postmaster/walsummarizer.c @@ -208,7 +208,7 @@ WalSummarizerShmemInit(void) * Entry point for walsummarizer process. */ void -WalSummarizerMain(char *startup_data, size_t startup_data_len) +WalSummarizerMain(const void *startup_data, size_t startup_data_len) { sigjmp_buf local_sigjmp_buf; MemoryContext context; diff --git a/src/backend/postmaster/walwriter.c b/src/backend/postmaster/walwriter.c index df4f7634969..15a71ad684d 100644 --- a/src/backend/postmaster/walwriter.c +++ b/src/backend/postmaster/walwriter.c @@ -84,7 +84,7 @@ int WalWriterFlushAfter = DEFAULT_WAL_WRITER_FLUSH_AFTER; * basic execution environment, but not enabled signals yet. */ void -WalWriterMain(char *startup_data, size_t startup_data_len) +WalWriterMain(const void *startup_data, size_t startup_data_len) { sigjmp_buf local_sigjmp_buf; MemoryContext walwriter_context; diff --git a/src/backend/replication/logical/slotsync.c b/src/backend/replication/logical/slotsync.c index 987857b9491..2c0a7439be4 100644 --- a/src/backend/replication/logical/slotsync.c +++ b/src/backend/replication/logical/slotsync.c @@ -1326,7 +1326,7 @@ reset_syncing_flag() * information periodically in order to create and sync the slots. */ void -ReplSlotSyncWorkerMain(char *startup_data, size_t startup_data_len) +ReplSlotSyncWorkerMain(const void *startup_data, size_t startup_data_len) { WalReceiverConn *wrconn = NULL; char *dbname; diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c index bd09262e27d..82f7302ff9f 100644 --- a/src/backend/replication/walreceiver.c +++ b/src/backend/replication/walreceiver.c @@ -180,7 +180,7 @@ ProcessWalRcvInterrupts(void) /* Main entry point for walreceiver process */ void -WalReceiverMain(char *startup_data, size_t startup_data_len) +WalReceiverMain(const void *startup_data, size_t startup_data_len) { char conninfo[MAXCONNINFO]; char *tmp_conninfo; diff --git a/src/backend/tcop/backend_startup.c b/src/backend/tcop/backend_startup.c index bd9640d0eb1..9ee738eb1e0 100644 --- a/src/backend/tcop/backend_startup.c +++ b/src/backend/tcop/backend_startup.c @@ -56,9 +56,9 @@ static void StartupPacketTimeoutHandler(void); * client, and start the main processing loop. */ void -BackendMain(char *startup_data, size_t startup_data_len) +BackendMain(const void *startup_data, size_t startup_data_len) { - BackendStartupData *bsdata = (BackendStartupData *) startup_data; + const BackendStartupData *bsdata = startup_data; Assert(startup_data_len == sizeof(BackendStartupData)); Assert(MyClientSocket != NULL); diff --git a/src/include/postmaster/autovacuum.h b/src/include/postmaster/autovacuum.h index 54e01c81d68..c0b6ce9072d 100644 --- a/src/include/postmaster/autovacuum.h +++ b/src/include/postmaster/autovacuum.h @@ -57,8 +57,8 @@ extern void autovac_init(void); /* called from postmaster when a worker could not be forked */ extern void AutoVacWorkerFailed(void); -extern void AutoVacLauncherMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); -extern void AutoVacWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void AutoVacLauncherMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void AutoVacWorkerMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern bool AutoVacuumRequestWork(AutoVacuumWorkItemType type, Oid relationId, BlockNumber blkno); diff --git a/src/include/postmaster/bgworker_internals.h b/src/include/postmaster/bgworker_internals.h index 092b1610663..29e6f44cf08 100644 --- a/src/include/postmaster/bgworker_internals.h +++ b/src/include/postmaster/bgworker_internals.h @@ -52,6 +52,6 @@ extern void ForgetUnstartedBackgroundWorkers(void); extern void ResetBackgroundWorkerCrashTimes(void); /* Entry point for background worker processes */ -extern void BackgroundWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void BackgroundWorkerMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); #endif /* BGWORKER_INTERNALS_H */ diff --git a/src/include/postmaster/bgwriter.h b/src/include/postmaster/bgwriter.h index 2d5854e6879..4fd717169f0 100644 --- a/src/include/postmaster/bgwriter.h +++ b/src/include/postmaster/bgwriter.h @@ -27,8 +27,8 @@ extern PGDLLIMPORT int CheckPointTimeout; extern PGDLLIMPORT int CheckPointWarning; extern PGDLLIMPORT double CheckPointCompletionTarget; -extern void BackgroundWriterMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); -extern void CheckpointerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void BackgroundWriterMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void CheckpointerMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void RequestCheckpoint(int flags); extern void CheckpointWriteDelay(int flags, double progress); diff --git a/src/include/postmaster/pgarch.h b/src/include/postmaster/pgarch.h index 8fc6bfeec1b..a32d78feb27 100644 --- a/src/include/postmaster/pgarch.h +++ b/src/include/postmaster/pgarch.h @@ -29,7 +29,7 @@ extern Size PgArchShmemSize(void); extern void PgArchShmemInit(void); extern bool PgArchCanRestart(void); -extern void PgArchiverMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void PgArchiverMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void PgArchWakeup(void); extern void PgArchForceDirScan(void); diff --git a/src/include/postmaster/postmaster.h b/src/include/postmaster/postmaster.h index 188a06e2379..d8a9f14b3b8 100644 --- a/src/include/postmaster/postmaster.h +++ b/src/include/postmaster/postmaster.h @@ -109,7 +109,7 @@ extern PGDLLIMPORT struct ClientSocket *MyClientSocket; /* prototypes for functions in launch_backend.c */ extern pid_t postmaster_child_launch(BackendType child_type, int child_slot, - char *startup_data, + const void *startup_data, size_t startup_data_len, struct ClientSocket *client_sock); const char *PostmasterChildName(BackendType child_type); diff --git a/src/include/postmaster/startup.h b/src/include/postmaster/startup.h index 736c97d121a..ae0f6347fc0 100644 --- a/src/include/postmaster/startup.h +++ b/src/include/postmaster/startup.h @@ -26,7 +26,7 @@ extern PGDLLIMPORT int log_startup_progress_interval; extern void HandleStartupProcInterrupts(void); -extern void StartupProcessMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void StartupProcessMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void PreRestoreCommand(void); extern void PostRestoreCommand(void); extern bool IsPromoteSignaled(void); diff --git a/src/include/postmaster/syslogger.h b/src/include/postmaster/syslogger.h index e92d8531478..197d8e43fdd 100644 --- a/src/include/postmaster/syslogger.h +++ b/src/include/postmaster/syslogger.h @@ -90,7 +90,7 @@ extern int SysLogger_Start(int child_slot); extern void write_syslogger_file(const char *buffer, int count, int destination); -extern void SysLoggerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void SysLoggerMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern bool CheckLogrotateSignal(void); extern void RemoveLogrotateSignalFiles(void); diff --git a/src/include/postmaster/walsummarizer.h b/src/include/postmaster/walsummarizer.h index bfe86663ccb..e1086d02c8b 100644 --- a/src/include/postmaster/walsummarizer.h +++ b/src/include/postmaster/walsummarizer.h @@ -21,7 +21,7 @@ extern PGDLLIMPORT int wal_summary_keep_time; extern Size WalSummarizerShmemSize(void); extern void WalSummarizerShmemInit(void); -extern void WalSummarizerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void WalSummarizerMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void GetWalSummarizerState(TimeLineID *summarized_tli, XLogRecPtr *summarized_lsn, diff --git a/src/include/postmaster/walwriter.h b/src/include/postmaster/walwriter.h index 9fc3c665774..ea8c22b174f 100644 --- a/src/include/postmaster/walwriter.h +++ b/src/include/postmaster/walwriter.h @@ -18,6 +18,6 @@ extern PGDLLIMPORT int WalWriterDelay; extern PGDLLIMPORT int WalWriterFlushAfter; -extern void WalWriterMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void WalWriterMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); #endif /* _WALWRITER_H */ diff --git a/src/include/replication/slotsync.h b/src/include/replication/slotsync.h index 3fad27f0a63..6cde7f81cec 100644 --- a/src/include/replication/slotsync.h +++ b/src/include/replication/slotsync.h @@ -26,7 +26,7 @@ extern PGDLLIMPORT char *PrimarySlotName; extern char *CheckAndGetDbnameFromConninfo(void); extern bool ValidateSlotSyncParams(int elevel); -extern void ReplSlotSyncWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void ReplSlotSyncWorkerMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void ShutDownSlotSync(void); extern bool SlotSyncWorkerCanRestart(void); diff --git a/src/include/replication/walreceiver.h b/src/include/replication/walreceiver.h index 204419bd8a3..992be93cce8 100644 --- a/src/include/replication/walreceiver.h +++ b/src/include/replication/walreceiver.h @@ -486,7 +486,7 @@ walrcv_clear_result(WalRcvExecResult *walres) } /* prototypes for functions in walreceiver.c */ -extern void WalReceiverMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void WalReceiverMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void ProcessWalRcvInterrupts(void); extern void WalRcvForceReply(void); diff --git a/src/include/tcop/backend_startup.h b/src/include/tcop/backend_startup.h index 01baf4aad75..73285611203 100644 --- a/src/include/tcop/backend_startup.h +++ b/src/include/tcop/backend_startup.h @@ -39,6 +39,6 @@ typedef struct BackendStartupData CAC_state canAcceptConnections; } BackendStartupData; -extern void BackendMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); +extern void BackendMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn(); #endif /* BACKEND_STARTUP_H */ -- 2.48.1