xref: /PHP-7.4/sapi/fpm/fpm/fpm_worker_pool.h (revision 698dd32b)
1 	/* (c) 2007,2008 Andrei Nigmatulin */
2 
3 #ifndef FPM_WORKER_POOL_H
4 #define FPM_WORKER_POOL_H 1
5 
6 #include "fpm_conf.h"
7 #include "fpm_shm.h"
8 
9 struct fpm_worker_pool_s;
10 struct fpm_child_s;
11 struct fpm_child_stat_s;
12 struct fpm_shm_s;
13 
14 enum fpm_address_domain {
15 	FPM_AF_UNIX = 1,
16 	FPM_AF_INET = 2
17 };
18 
19 struct fpm_worker_pool_s {
20 	struct fpm_worker_pool_s *next;
21 	struct fpm_worker_pool_config_s *config;
22 	char *user, *home;									/* for setting env USER and HOME */
23 	enum fpm_address_domain listen_address_domain;
24 	int listening_socket;
25 	int set_uid, set_gid;								/* config uid and gid */
26 	int socket_uid, socket_gid, socket_mode;
27 
28 	/* runtime */
29 	struct fpm_child_s *children;
30 	int running_children;
31 	int idle_spawn_rate;
32 	int warn_max_children;
33 #if 0
34 	int warn_lq;
35 #endif
36 	struct fpm_scoreboard_s *scoreboard;
37 	int log_fd;
38 	char **limit_extensions;
39 
40 	/* for ondemand PM */
41 	struct fpm_event_s *ondemand_event;
42 	int socket_event_set;
43 
44 #ifdef HAVE_FPM_ACL
45 	void *socket_acl;
46 #endif
47 };
48 
49 struct fpm_worker_pool_s *fpm_worker_pool_alloc();
50 void fpm_worker_pool_free(struct fpm_worker_pool_s *wp);
51 int fpm_worker_pool_init_main();
52 
53 void fpm_worker_pool_free_limit_extensions(char **limit_extensions);
54 
55 extern struct fpm_worker_pool_s *fpm_worker_all_pools;
56 
57 #endif
58