Skip to content

Commit 7202d72

Browse files
committed
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 <[email protected]> Discussion: https://www.postgresql.org/message-id/flat/fd1fcedb-3492-4fc8-9e3e-74b97f2db6c7%40eisentraut.org
1 parent b50a554 commit 7202d72

26 files changed

+42
-42
lines changed

src/backend/postmaster/autovacuum.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ static void check_av_worker_gucs(void);
364364
* Main entry point for the autovacuum launcher process.
365365
*/
366366
void
367-
AutoVacLauncherMain(char *startup_data, size_t startup_data_len)
367+
AutoVacLauncherMain(const void *startup_data, size_t startup_data_len)
368368
{
369369
sigjmp_buf local_sigjmp_buf;
370370

@@ -1371,7 +1371,7 @@ avl_sigusr2_handler(SIGNAL_ARGS)
13711371
* Main entry point for autovacuum worker processes.
13721372
*/
13731373
void
1374-
AutoVacWorkerMain(char *startup_data, size_t startup_data_len)
1374+
AutoVacWorkerMain(const void *startup_data, size_t startup_data_len)
13751375
{
13761376
sigjmp_buf local_sigjmp_buf;
13771377
Oid dbid;

src/backend/postmaster/bgworker.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -714,7 +714,7 @@ bgworker_die(SIGNAL_ARGS)
714714
* Main entry point for background worker processes.
715715
*/
716716
void
717-
BackgroundWorkerMain(char *startup_data, size_t startup_data_len)
717+
BackgroundWorkerMain(const void *startup_data, size_t startup_data_len)
718718
{
719719
sigjmp_buf local_sigjmp_buf;
720720
BackgroundWorker *worker;

src/backend/postmaster/bgwriter.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ static XLogRecPtr last_snapshot_lsn = InvalidXLogRecPtr;
8484
* basic execution environment, but not enabled signals yet.
8585
*/
8686
void
87-
BackgroundWriterMain(char *startup_data, size_t startup_data_len)
87+
BackgroundWriterMain(const void *startup_data, size_t startup_data_len)
8888
{
8989
sigjmp_buf local_sigjmp_buf;
9090
MemoryContext bgwriter_context;

src/backend/postmaster/checkpointer.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ static void ReqShutdownXLOG(SIGNAL_ARGS);
175175
* basic execution environment, but not enabled signals yet.
176176
*/
177177
void
178-
CheckpointerMain(char *startup_data, size_t startup_data_len)
178+
CheckpointerMain(const void *startup_data, size_t startup_data_len)
179179
{
180180
sigjmp_buf local_sigjmp_buf;
181181
MemoryContext checkpointer_context;

src/backend/postmaster/launch_backend.c

+10-10
Original file line numberDiff line numberDiff line change
@@ -149,18 +149,18 @@ typedef struct
149149

150150
#define SizeOfBackendParameters(startup_data_len) (offsetof(BackendParameters, startup_data) + startup_data_len)
151151

152-
static void read_backend_variables(char *id, char **startup_data, size_t *startup_data_len);
152+
static void read_backend_variables(char *id, void **startup_data, size_t *startup_data_len);
153153
static void restore_backend_variables(BackendParameters *param);
154154

155155
static bool save_backend_variables(BackendParameters *param, int child_slot,
156156
ClientSocket *client_sock,
157157
#ifdef WIN32
158158
HANDLE childProcess, pid_t childPid,
159159
#endif
160-
char *startup_data, size_t startup_data_len);
160+
const void *startup_data, size_t startup_data_len);
161161

162162
static pid_t internal_forkexec(const char *child_kind, int child_slot,
163-
char *startup_data, size_t startup_data_len,
163+
const void *startup_data, size_t startup_data_len,
164164
ClientSocket *client_sock);
165165

166166
#endif /* EXEC_BACKEND */
@@ -171,7 +171,7 @@ static pid_t internal_forkexec(const char *child_kind, int child_slot,
171171
typedef struct
172172
{
173173
const char *name;
174-
void (*main_fn) (char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
174+
void (*main_fn) (const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
175175
bool shmem_attach;
176176
} child_process_kind;
177177

@@ -225,7 +225,7 @@ PostmasterChildName(BackendType child_type)
225225
*/
226226
pid_t
227227
postmaster_child_launch(BackendType child_type, int child_slot,
228-
char *startup_data, size_t startup_data_len,
228+
const void *startup_data, size_t startup_data_len,
229229
ClientSocket *client_sock)
230230
{
231231
pid_t pid;
@@ -289,7 +289,7 @@ postmaster_child_launch(BackendType child_type, int child_slot,
289289
*/
290290
static pid_t
291291
internal_forkexec(const char *child_kind, int child_slot,
292-
char *startup_data, size_t startup_data_len, ClientSocket *client_sock)
292+
const void *startup_data, size_t startup_data_len, ClientSocket *client_sock)
293293
{
294294
static unsigned long tmpBackendFileNum = 0;
295295
pid_t pid;
@@ -399,7 +399,7 @@ internal_forkexec(const char *child_kind, int child_slot,
399399
*/
400400
static pid_t
401401
internal_forkexec(const char *child_kind, int child_slot,
402-
char *startup_data, size_t startup_data_len, ClientSocket *client_sock)
402+
const void *startup_data, size_t startup_data_len, ClientSocket *client_sock)
403403
{
404404
int retry_count = 0;
405405
STARTUPINFO si;
@@ -581,7 +581,7 @@ internal_forkexec(const char *child_kind, int child_slot,
581581
void
582582
SubPostmasterMain(int argc, char *argv[])
583583
{
584-
char *startup_data;
584+
void *startup_data;
585585
size_t startup_data_len;
586586
char *child_kind;
587587
BackendType child_type;
@@ -699,7 +699,7 @@ save_backend_variables(BackendParameters *param,
699699
#ifdef WIN32
700700
HANDLE childProcess, pid_t childPid,
701701
#endif
702-
char *startup_data, size_t startup_data_len)
702+
const void *startup_data, size_t startup_data_len)
703703
{
704704
if (client_sock)
705705
memcpy(&param->client_sock, client_sock, sizeof(ClientSocket));
@@ -867,7 +867,7 @@ read_inheritable_socket(SOCKET *dest, InheritableSocket *src)
867867
#endif
868868

869869
static void
870-
read_backend_variables(char *id, char **startup_data, size_t *startup_data_len)
870+
read_backend_variables(char *id, void **startup_data, size_t *startup_data_len)
871871
{
872872
BackendParameters param;
873873

src/backend/postmaster/pgarch.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ PgArchCanRestart(void)
214214

215215
/* Main entry point for archiver process */
216216
void
217-
PgArchiverMain(char *startup_data, size_t startup_data_len)
217+
PgArchiverMain(const void *startup_data, size_t startup_data_len)
218218
{
219219
Assert(startup_data_len == 0);
220220

src/backend/postmaster/postmaster.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -3517,7 +3517,7 @@ BackendStartup(ClientSocket *client_sock)
35173517
bn->bgworker_notify = false;
35183518

35193519
pid = postmaster_child_launch(bn->bkend_type, bn->child_slot,
3520-
(char *) &startup_data, sizeof(startup_data),
3520+
&startup_data, sizeof(startup_data),
35213521
client_sock);
35223522
if (pid < 0)
35233523
{
@@ -4080,7 +4080,7 @@ StartBackgroundWorker(RegisteredBgWorker *rw)
40804080
rw->rw_worker.bgw_name)));
40814081

40824082
worker_pid = postmaster_child_launch(B_BG_WORKER, bn->child_slot,
4083-
(char *) &rw->rw_worker, sizeof(BackgroundWorker), NULL);
4083+
&rw->rw_worker, sizeof(BackgroundWorker), NULL);
40844084
if (worker_pid == -1)
40854085
{
40864086
/* in postmaster, fork failed ... */

src/backend/postmaster/startup.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ StartupProcExit(int code, Datum arg)
213213
* ----------------------------------
214214
*/
215215
void
216-
StartupProcessMain(char *startup_data, size_t startup_data_len)
216+
StartupProcessMain(const void *startup_data, size_t startup_data_len)
217217
{
218218
Assert(startup_data_len == 0);
219219

src/backend/postmaster/syslogger.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ typedef struct
162162
* argc/argv parameters are valid only in EXEC_BACKEND case.
163163
*/
164164
void
165-
SysLoggerMain(char *startup_data, size_t startup_data_len)
165+
SysLoggerMain(const void *startup_data, size_t startup_data_len)
166166
{
167167
#ifndef WIN32
168168
char logbuffer[READ_BUF_SIZE];
@@ -183,7 +183,7 @@ SysLoggerMain(char *startup_data, size_t startup_data_len)
183183
*/
184184
#ifdef EXEC_BACKEND
185185
{
186-
SysloggerStartupData *slsdata = (SysloggerStartupData *) startup_data;
186+
const SysloggerStartupData *slsdata = startup_data;
187187

188188
Assert(startup_data_len == sizeof(*slsdata));
189189
syslogFile = syslogger_fdopen(slsdata->syslogFile);
@@ -699,7 +699,7 @@ SysLogger_Start(int child_slot)
699699
startup_data.csvlogFile = syslogger_fdget(csvlogFile);
700700
startup_data.jsonlogFile = syslogger_fdget(jsonlogFile);
701701
sysloggerPid = postmaster_child_launch(B_LOGGER, child_slot,
702-
(char *) &startup_data, sizeof(startup_data), NULL);
702+
&startup_data, sizeof(startup_data), NULL);
703703
#else
704704
sysloggerPid = postmaster_child_launch(B_LOGGER, child_slot,
705705
NULL, 0, NULL);

src/backend/postmaster/walsummarizer.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ WalSummarizerShmemInit(void)
208208
* Entry point for walsummarizer process.
209209
*/
210210
void
211-
WalSummarizerMain(char *startup_data, size_t startup_data_len)
211+
WalSummarizerMain(const void *startup_data, size_t startup_data_len)
212212
{
213213
sigjmp_buf local_sigjmp_buf;
214214
MemoryContext context;

src/backend/postmaster/walwriter.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ int WalWriterFlushAfter = DEFAULT_WAL_WRITER_FLUSH_AFTER;
8484
* basic execution environment, but not enabled signals yet.
8585
*/
8686
void
87-
WalWriterMain(char *startup_data, size_t startup_data_len)
87+
WalWriterMain(const void *startup_data, size_t startup_data_len)
8888
{
8989
sigjmp_buf local_sigjmp_buf;
9090
MemoryContext walwriter_context;

src/backend/replication/logical/slotsync.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -1326,7 +1326,7 @@ reset_syncing_flag()
13261326
* information periodically in order to create and sync the slots.
13271327
*/
13281328
void
1329-
ReplSlotSyncWorkerMain(char *startup_data, size_t startup_data_len)
1329+
ReplSlotSyncWorkerMain(const void *startup_data, size_t startup_data_len)
13301330
{
13311331
WalReceiverConn *wrconn = NULL;
13321332
char *dbname;

src/backend/replication/walreceiver.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ ProcessWalRcvInterrupts(void)
180180

181181
/* Main entry point for walreceiver process */
182182
void
183-
WalReceiverMain(char *startup_data, size_t startup_data_len)
183+
WalReceiverMain(const void *startup_data, size_t startup_data_len)
184184
{
185185
char conninfo[MAXCONNINFO];
186186
char *tmp_conninfo;

src/backend/tcop/backend_startup.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ static void StartupPacketTimeoutHandler(void);
5656
* client, and start the main processing loop.
5757
*/
5858
void
59-
BackendMain(char *startup_data, size_t startup_data_len)
59+
BackendMain(const void *startup_data, size_t startup_data_len)
6060
{
61-
BackendStartupData *bsdata = (BackendStartupData *) startup_data;
61+
const BackendStartupData *bsdata = startup_data;
6262

6363
Assert(startup_data_len == sizeof(BackendStartupData));
6464
Assert(MyClientSocket != NULL);

src/include/postmaster/autovacuum.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ extern void autovac_init(void);
5858
/* called from postmaster when a worker could not be forked */
5959
extern void AutoVacWorkerFailed(void);
6060

61-
extern void AutoVacLauncherMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
62-
extern void AutoVacWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
61+
extern void AutoVacLauncherMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
62+
extern void AutoVacWorkerMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
6363

6464
extern bool AutoVacuumRequestWork(AutoVacuumWorkItemType type,
6565
Oid relationId, BlockNumber blkno);

src/include/postmaster/bgworker_internals.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,6 @@ extern void ForgetUnstartedBackgroundWorkers(void);
5252
extern void ResetBackgroundWorkerCrashTimes(void);
5353

5454
/* Entry point for background worker processes */
55-
extern void BackgroundWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
55+
extern void BackgroundWorkerMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
5656

5757
#endif /* BGWORKER_INTERNALS_H */

src/include/postmaster/bgwriter.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ extern PGDLLIMPORT int CheckPointTimeout;
2727
extern PGDLLIMPORT int CheckPointWarning;
2828
extern PGDLLIMPORT double CheckPointCompletionTarget;
2929

30-
extern void BackgroundWriterMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
31-
extern void CheckpointerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
30+
extern void BackgroundWriterMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
31+
extern void CheckpointerMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
3232

3333
extern void RequestCheckpoint(int flags);
3434
extern void CheckpointWriteDelay(int flags, double progress);

src/include/postmaster/pgarch.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
extern Size PgArchShmemSize(void);
3030
extern void PgArchShmemInit(void);
3131
extern bool PgArchCanRestart(void);
32-
extern void PgArchiverMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
32+
extern void PgArchiverMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
3333
extern void PgArchWakeup(void);
3434
extern void PgArchForceDirScan(void);
3535

src/include/postmaster/postmaster.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ extern PGDLLIMPORT struct ClientSocket *MyClientSocket;
109109
/* prototypes for functions in launch_backend.c */
110110
extern pid_t postmaster_child_launch(BackendType child_type,
111111
int child_slot,
112-
char *startup_data,
112+
const void *startup_data,
113113
size_t startup_data_len,
114114
struct ClientSocket *client_sock);
115115
const char *PostmasterChildName(BackendType child_type);

src/include/postmaster/startup.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
extern PGDLLIMPORT int log_startup_progress_interval;
2727

2828
extern void HandleStartupProcInterrupts(void);
29-
extern void StartupProcessMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
29+
extern void StartupProcessMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
3030
extern void PreRestoreCommand(void);
3131
extern void PostRestoreCommand(void);
3232
extern bool IsPromoteSignaled(void);

src/include/postmaster/syslogger.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ extern int SysLogger_Start(int child_slot);
9090

9191
extern void write_syslogger_file(const char *buffer, int count, int destination);
9292

93-
extern void SysLoggerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
93+
extern void SysLoggerMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
9494

9595
extern bool CheckLogrotateSignal(void);
9696
extern void RemoveLogrotateSignalFiles(void);

src/include/postmaster/walsummarizer.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ extern PGDLLIMPORT int wal_summary_keep_time;
2121

2222
extern Size WalSummarizerShmemSize(void);
2323
extern void WalSummarizerShmemInit(void);
24-
extern void WalSummarizerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
24+
extern void WalSummarizerMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
2525

2626
extern void GetWalSummarizerState(TimeLineID *summarized_tli,
2727
XLogRecPtr *summarized_lsn,

src/include/postmaster/walwriter.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@
1818
extern PGDLLIMPORT int WalWriterDelay;
1919
extern PGDLLIMPORT int WalWriterFlushAfter;
2020

21-
extern void WalWriterMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
21+
extern void WalWriterMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
2222

2323
#endif /* _WALWRITER_H */

src/include/replication/slotsync.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ extern PGDLLIMPORT char *PrimarySlotName;
2626
extern char *CheckAndGetDbnameFromConninfo(void);
2727
extern bool ValidateSlotSyncParams(int elevel);
2828

29-
extern void ReplSlotSyncWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
29+
extern void ReplSlotSyncWorkerMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
3030

3131
extern void ShutDownSlotSync(void);
3232
extern bool SlotSyncWorkerCanRestart(void);

src/include/replication/walreceiver.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ walrcv_clear_result(WalRcvExecResult *walres)
486486
}
487487

488488
/* prototypes for functions in walreceiver.c */
489-
extern void WalReceiverMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
489+
extern void WalReceiverMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
490490
extern void ProcessWalRcvInterrupts(void);
491491
extern void WalRcvForceReply(void);
492492

src/include/tcop/backend_startup.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,6 @@ typedef struct BackendStartupData
3939
CAC_state canAcceptConnections;
4040
} BackendStartupData;
4141

42-
extern void BackendMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
42+
extern void BackendMain(const void *startup_data, size_t startup_data_len) pg_attribute_noreturn();
4343

4444
#endif /* BACKEND_STARTUP_H */

0 commit comments

Comments
 (0)