mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-19 20:00:51 +08:00
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. Reviewed-by: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> Discussion: https://www.postgresql.org/message-id/flat/fd1fcedb-3492-4fc8-9e3e-74b97f2db6c7%40eisentraut.org
This commit is contained in:
parent
b50a554cc8
commit
7202d72787
@ -364,7 +364,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;
|
||||
|
||||
@ -1371,7 +1371,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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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 @@ retry:
|
||||
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;
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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 ... */
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -58,8 +58,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);
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user