#ifndef BGWORKER_INTERNALS_H
#define BGWORKER_INTERNALS_H
#include "datatype/timestamp.h"
#include "lib/ilist.h"
#include "postmaster/bgworker.h"
#define MAX_PARALLEL_WORKER_LIMIT 1024
typedef struct RegisteredBgWorker
{
BackgroundWorker rw_worker;
pid_t rw_pid;
TimestampTz rw_crashed_at;
int rw_shmem_slot;
bool rw_terminate;
dlist_node rw_lnode;
} RegisteredBgWorker;
extern PGDLLIMPORT dlist_head BackgroundWorkerList;
extern Size BackgroundWorkerShmemSize(void);
extern void BackgroundWorkerShmemInit(void);
extern void BackgroundWorkerStateChange(bool allow_new_workers);
extern void ForgetBackgroundWorker(RegisteredBgWorker *rw);
extern void ReportBackgroundWorkerPID(RegisteredBgWorker *rw);
extern void ReportBackgroundWorkerExit(RegisteredBgWorker *rw);
extern void BackgroundWorkerStopNotifications(pid_t pid);
extern void ForgetUnstartedBackgroundWorkers(void);
extern void ResetBackgroundWorkerCrashTimes(void);
pg_noreturn extern void BackgroundWorkerMain(const void *startup_data, size_t startup_data_len);
#endif