]> granicus.if.org Git - postgresql/blob - src/include/postmaster/bgworker_internals.h
Update copyright for 2016
[postgresql] / src / include / postmaster / bgworker_internals.h
1 /*--------------------------------------------------------------------
2  * bgworker_internals.h
3  *              POSTGRES pluggable background workers internals
4  *
5  * Portions Copyright (c) 1996-2016, 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 /*
20  * List of background workers, private to postmaster.
21  *
22  * A worker that requests a database connection during registration will have
23  * rw_backend set, and will be present in BackendList.  Note: do not rely on
24  * rw_backend being non-NULL for shmem-connected workers!
25  */
26 typedef struct RegisteredBgWorker
27 {
28         BackgroundWorker rw_worker; /* its registry entry */
29         struct bkend *rw_backend;       /* its BackendList entry, or NULL */
30         pid_t           rw_pid;                 /* 0 if not running */
31         int                     rw_child_slot;
32         TimestampTz rw_crashed_at;      /* if not 0, time it last crashed */
33         int                     rw_shmem_slot;
34         bool            rw_terminate;
35         slist_node      rw_lnode;               /* list link */
36 } RegisteredBgWorker;
37
38 extern slist_head BackgroundWorkerList;
39
40 extern Size BackgroundWorkerShmemSize(void);
41 extern void BackgroundWorkerShmemInit(void);
42 extern void BackgroundWorkerStateChange(void);
43 extern void ForgetBackgroundWorker(slist_mutable_iter *cur);
44 extern void ReportBackgroundWorkerPID(RegisteredBgWorker *);
45 extern void BackgroundWorkerStopNotifications(pid_t pid);
46 extern void ResetBackgroundWorkerCrashTimes(void);
47
48 /* Function to start a background worker, called from postmaster.c */
49 extern void StartBackgroundWorker(void) pg_attribute_noreturn();
50
51 #ifdef EXEC_BACKEND
52 extern BackgroundWorker *BackgroundWorkerEntry(int slotno);
53 #endif
54
55 #endif   /* BGWORKER_INTERNALS_H */