PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
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 */
55pg_noreturn extern void BackgroundWorkerMain(const void *startup_data, size_t startup_data_len);
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
pg_noreturn void BackgroundWorkerMain(const void *startup_data, size_t startup_data_len)
Definition: bgworker.c:717
void ForgetBackgroundWorker(RegisteredBgWorker *rw)
Definition: bgworker.c:429
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:1291
#define pg_noreturn
Definition: c.h:165
size_t Size
Definition: c.h:576
int64 TimestampTz
Definition: timestamp.h:39
BackgroundWorker rw_worker