1 /*-------------------------------------------------------------------------
2  *
3  * postmaster.h
4  *	  Exports from postmaster/postmaster.c.
5  *
6  * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  * src/include/postmaster/postmaster.h
10  *
11  *-------------------------------------------------------------------------
12  */
13 #ifndef _POSTMASTER_H
14 #define _POSTMASTER_H
15 
16 /* GUC options */
17 extern bool EnableSSL;
18 extern int	ReservedBackends;
19 extern PGDLLIMPORT int PostPortNumber;
20 extern int	Unix_socket_permissions;
21 extern char *Unix_socket_group;
22 extern char *Unix_socket_directories;
23 extern char *ListenAddresses;
24 extern bool ClientAuthInProgress;
25 extern int	PreAuthDelay;
26 extern int	AuthenticationTimeout;
27 extern bool Log_connections;
28 extern bool log_hostname;
29 extern bool enable_bonjour;
30 extern char *bonjour_name;
31 extern bool restart_after_crash;
32 extern bool remove_temp_files_after_crash;
33 
34 #ifdef WIN32
35 extern HANDLE PostmasterHandle;
36 #else
37 extern int	postmaster_alive_fds[2];
38 
39 /*
40  * Constants that represent which of postmaster_alive_fds is held by
41  * postmaster, and which is used in children to check for postmaster death.
42  */
43 #define POSTMASTER_FD_WATCH		0	/* used in children to check for
44 									 * postmaster death */
45 #define POSTMASTER_FD_OWN		1	/* kept open by postmaster only */
46 #endif
47 
48 extern PGDLLIMPORT const char *progname;
49 
50 extern void PostmasterMain(int argc, char *argv[]) pg_attribute_noreturn();
51 extern void ClosePostmasterPorts(bool am_syslogger);
52 extern void InitProcessGlobals(void);
53 
54 extern int	MaxLivePostmasterChildren(void);
55 
56 extern bool PostmasterMarkPIDForWorkerNotify(int);
57 
58 #ifdef EXEC_BACKEND
59 extern pid_t postmaster_forkexec(int argc, char *argv[]);
60 extern void SubPostmasterMain(int argc, char *argv[]) pg_attribute_noreturn();
61 
62 extern Size ShmemBackendArraySize(void);
63 extern void ShmemBackendArrayAllocation(void);
64 #endif
65 
66 /*
67  * Note: MAX_BACKENDS is limited to 2^18-1 because that's the width reserved
68  * for buffer references in buf_internals.h.  This limitation could be lifted
69  * by using a 64bit state; but it's unlikely to be worthwhile as 2^18-1
70  * backends exceed currently realistic configurations. Even if that limitation
71  * were removed, we still could not a) exceed 2^23-1 because inval.c stores
72  * the backend ID as a 3-byte signed integer, b) INT_MAX/4 because some places
73  * compute 4*MaxBackends without any overflow check.  This is rechecked in the
74  * relevant GUC check hooks and in RegisterBackgroundWorker().
75  */
76 #define MAX_BACKENDS	0x3FFFF
77 
78 #endif							/* _POSTMASTER_H */
79