PostgreSQL Source Code git master
bgworker_internals.h
Go to the documentation of this file.
1/*--------------------------------------------------------------------
2 * bgworker_internals.h
3 * POSTGRES pluggable background workers internals
4 *
5 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
6 * Portions Copyright (c) 1994, Regents of the University of California
7 *
8 * IDENTIFICATION
9 * src/include/postmaster/bgworker_internals.h
10 *--------------------------------------------------------------------
11 */
12#ifndef BGWORKER_INTERNALS_H
13#define BGWORKER_INTERNALS_H
14
15#include "datatype/timestamp.h"
16#include "lib/ilist.h"
17#include "postmaster/bgworker.h"
18
19/* GUC options */
20
21/*
22 * Maximum possible value of parallel workers.
23 */
24#define MAX_PARALLEL_WORKER_LIMIT 1024
25
26/*
27 * List of background workers, private to postmaster.
28 *
29 * All workers that are currently running will also have an entry in
30 * ActiveChildList.
31 */
32typedef struct RegisteredBgWorker
33{
34 BackgroundWorker rw_worker; /* its registry entry */
35 pid_t rw_pid; /* 0 if not running */
36 TimestampTz rw_crashed_at; /* if not 0, time it last crashed */
39 dlist_node rw_lnode; /* list link */
41
43
45extern void BackgroundWorkerShmemInit(void);
46extern void BackgroundWorkerStateChange(bool allow_new_workers);
50extern void BackgroundWorkerStopNotifications(pid_t pid);
51extern void ForgetUnstartedBackgroundWorkers(void);
52extern void ResetBackgroundWorkerCrashTimes(void);
53
54/* Entry point for background worker processes */
55extern void BackgroundWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
56
57#endif /* BGWORKER_INTERNALS_H */
void ReportBackgroundWorkerPID(RegisteredBgWorker *rw)
Definition: bgworker.c:461
void ReportBackgroundWorkerExit(RegisteredBgWorker *rw)
Definition: bgworker.c:483
void ResetBackgroundWorkerCrashTimes(void)
Definition: bgworker.c:579
void BackgroundWorkerShmemInit(void)
Definition: bgworker.c:162
struct RegisteredBgWorker RegisteredBgWorker
void ForgetBackgroundWorker(RegisteredBgWorker *rw)
Definition: bgworker.c:429
void BackgroundWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn()
Definition: bgworker.c:717
PGDLLIMPORT dlist_head BackgroundWorkerList
Definition: bgworker.c:40
void BackgroundWorkerStopNotifications(pid_t pid)
Definition: bgworker.c:514
Size BackgroundWorkerShmemSize(void)
Definition: bgworker.c:146
void BackgroundWorkerStateChange(bool allow_new_workers)
Definition: bgworker.c:246
void ForgetUnstartedBackgroundWorkers(void)
Definition: bgworker.c:541
#define PGDLLIMPORT
Definition: c.h:1277
#define pg_attribute_noreturn()
Definition: c.h:239
size_t Size
Definition: c.h:562
int64 TimestampTz
Definition: timestamp.h:39
BackgroundWorker rw_worker