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-2024, 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  * A worker that requests a database connection during registration will have
30  * rw_backend set, and will be present in BackendList. Note: do not rely on
31  * rw_backend being non-NULL for shmem-connected workers!
32  */
33 typedef struct RegisteredBgWorker
34 {
35  BackgroundWorker rw_worker; /* its registry entry */
36  struct bkend *rw_backend; /* its BackendList entry, or NULL */
37  pid_t rw_pid; /* 0 if not running */
39  TimestampTz rw_crashed_at; /* if not 0, time it last crashed */
42  slist_node rw_lnode; /* list link */
44 
46 
47 extern Size BackgroundWorkerShmemSize(void);
48 extern void BackgroundWorkerShmemInit(void);
49 extern void BackgroundWorkerStateChange(bool allow_new_workers);
53 extern void BackgroundWorkerStopNotifications(pid_t pid);
54 extern void ForgetUnstartedBackgroundWorkers(void);
55 extern void ResetBackgroundWorkerCrashTimes(void);
56 
57 /* Entry point for background worker processes */
58 extern void BackgroundWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
59 
60 #endif /* BGWORKER_INTERNALS_H */
void ResetBackgroundWorkerCrashTimes(void)
Definition: bgworker.c:585
PGDLLIMPORT slist_head BackgroundWorkerList
Definition: bgworker.c:40
void BackgroundWorkerShmemInit(void)
Definition: bgworker.c:162
struct RegisteredBgWorker RegisteredBgWorker
void ForgetBackgroundWorker(slist_mutable_iter *cur)
Definition: bgworker.c:432
void ReportBackgroundWorkerPID(RegisteredBgWorker *)
Definition: bgworker.c:467
void BackgroundWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn()
Definition: bgworker.c:723
void BackgroundWorkerStopNotifications(pid_t pid)
Definition: bgworker.c:520
Size BackgroundWorkerShmemSize(void)
Definition: bgworker.c:146
void BackgroundWorkerStateChange(bool allow_new_workers)
Definition: bgworker.c:246
void ReportBackgroundWorkerExit(slist_mutable_iter *cur)
Definition: bgworker.c:486
void ForgetUnstartedBackgroundWorkers(void)
Definition: bgworker.c:547
#define PGDLLIMPORT
Definition: c.h:1316
#define pg_attribute_noreturn()
Definition: c.h:217
size_t Size
Definition: c.h:605
int64 TimestampTz
Definition: timestamp.h:39
struct cursor * cur
Definition: ecpg.c:28
struct bkend * rw_backend
BackgroundWorker rw_worker
pid_t pid
Definition: postmaster.c:170