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 <ilmari@ilmari.org> 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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 10 additions & 10 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 3 additions & 3 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy