* 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;
* 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;
* 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;
* 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;
* 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;
#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,
#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 */
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;
*/
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;
*/
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;
*/
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;
void
SubPostmasterMain(int argc, char *argv[])
{
- char *startup_data;
+ void *startup_data;
size_t startup_data_len;
char *child_kind;
BackendType child_type;
#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));
#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;
/* 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);
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)
{
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 ... */
* ----------------------------------
*/
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);
* 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];
*/
#ifdef EXEC_BACKEND
{
- SysloggerStartupData *slsdata = (SysloggerStartupData *) startup_data;
+ const SysloggerStartupData *slsdata = startup_data;
Assert(startup_data_len == sizeof(*slsdata));
syslogFile = syslogger_fdopen(slsdata->syslogFile);
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);
* 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;
* 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;
* 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;
/* 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;
* 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);
/* 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);
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 */
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);
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);
/* 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);
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);
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);
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,
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 */
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);
}
/* 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);
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 */