mirror of
				https://git.haproxy.org/git/haproxy.git/
				synced 2025-10-31 16:41:01 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			157 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * include/haproxy/global.h
 | |
|  * Exported global variables and functions.
 | |
|  *
 | |
|  * Copyright (C) 2000-2020 Willy Tarreau - w@1wt.eu
 | |
|  *
 | |
|  * This library is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU Lesser General Public
 | |
|  * License as published by the Free Software Foundation, version 2.1
 | |
|  * exclusively.
 | |
|  *
 | |
|  * This library is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | |
|  * Lesser General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU Lesser General Public
 | |
|  * License along with this library; if not, write to the Free Software
 | |
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 | |
|  */
 | |
| 
 | |
| #ifndef _HAPROXY_GLOBAL_H
 | |
| #define _HAPROXY_GLOBAL_H
 | |
| 
 | |
| #include <haproxy/api-t.h>
 | |
| #include <haproxy/global-t.h>
 | |
| #include <haproxy/mworker-t.h>
 | |
| #include <haproxy/vars-t.h>
 | |
| 
 | |
| extern struct global global;
 | |
| extern int  pid;                /* current process id */
 | |
| extern int  relative_pid;       /* process id starting at 1 */
 | |
| extern unsigned long pid_bit;   /* bit corresponding to the process id */
 | |
| extern unsigned long all_proc_mask; /* mask of all processes */
 | |
| extern int  actconn;            /* # of active sessions */
 | |
| extern int  listeners;
 | |
| extern int  jobs;               /* # of active jobs (listeners, sessions, open devices) */
 | |
| extern int  unstoppable_jobs;   /* # of active jobs that can't be stopped during a soft stop */
 | |
| extern int  active_peers;       /* # of active peers (connection attempts and successes) */
 | |
| extern int  connected_peers;    /* # of really connected peers */
 | |
| extern int nb_oldpids;          /* contains the number of old pids found */
 | |
| extern const int zero;
 | |
| extern const int one;
 | |
| extern const struct linger nolinger;
 | |
| extern int stopping;	/* non zero means stopping in progress */
 | |
| extern int killed;	/* >0 means a hard-stop is triggered, >1 means hard-stop immediately */
 | |
| extern char hostname[MAX_HOSTNAME_LEN];
 | |
| extern char *localpeer;
 | |
| extern unsigned int warned;     /* bitfield of a few warnings to emit just once */
 | |
| extern volatile unsigned long sleeping_thread_mask;
 | |
| extern struct list proc_list; /* list of process in mworker mode */
 | |
| extern struct mworker_proc *proc_self; /* process structure of current process */
 | |
| extern int master; /* 1 if in master, 0 otherwise */
 | |
| extern unsigned int rlim_fd_cur_at_boot;
 | |
| extern unsigned int rlim_fd_max_at_boot;
 | |
| extern int atexit_flag;
 | |
| extern unsigned char boot_seed[20];  // per-boot random seed (160 bits initially)
 | |
| extern THREAD_LOCAL struct buffer trash;
 | |
| 
 | |
| struct proxy;
 | |
| struct server;
 | |
| int main(int argc, char **argv);
 | |
| void deinit(void);
 | |
| __attribute__((noreturn)) void deinit_and_exit(int);
 | |
| void run_poll_loop(void);
 | |
| int tell_old_pids(int sig);
 | |
| int delete_oldpid(int pid);
 | |
| void hap_register_build_opts(const char *str, int must_free);
 | |
| void hap_register_post_check(int (*fct)());
 | |
| void hap_register_post_proxy_check(int (*fct)(struct proxy *));
 | |
| void hap_register_post_server_check(int (*fct)(struct server *));
 | |
| void hap_register_post_deinit(void (*fct)());
 | |
| void hap_register_proxy_deinit(void (*fct)(struct proxy *));
 | |
| void hap_register_server_deinit(void (*fct)(struct server *));
 | |
| 
 | |
| void hap_register_per_thread_alloc(int (*fct)());
 | |
| void hap_register_per_thread_init(int (*fct)());
 | |
| void hap_register_per_thread_deinit(void (*fct)());
 | |
| void hap_register_per_thread_free(int (*fct)());
 | |
| 
 | |
| void mworker_accept_wrapper(int fd);
 | |
| void mworker_reload();
 | |
| 
 | |
| /* to be used with warned and WARN_* */
 | |
| static inline int already_warned(unsigned int warning)
 | |
| {
 | |
| 	if (warned & warning)
 | |
| 		return 1;
 | |
| 	warned |= warning;
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| /* returns a mask if set, otherwise all_proc_mask */
 | |
| static inline unsigned long proc_mask(unsigned long mask)
 | |
| {
 | |
| 	return mask ? mask : all_proc_mask;
 | |
| }
 | |
| 
 | |
| /* returns a mask if set, otherwise all_threads_mask */
 | |
| static inline unsigned long thread_mask(unsigned long mask)
 | |
| {
 | |
| 	return mask ? mask : all_threads_mask;
 | |
| }
 | |
| 
 | |
| /* simplified way to declare static build options in a file */
 | |
| #define REGISTER_BUILD_OPTS(str) \
 | |
| 	INITCALL2(STG_REGISTER, hap_register_build_opts, (str), 0)
 | |
| 
 | |
| /* simplified way to declare a post-check callback in a file */
 | |
| #define REGISTER_POST_CHECK(fct) \
 | |
| 	INITCALL1(STG_REGISTER, hap_register_post_check, (fct))
 | |
| 
 | |
| /* simplified way to declare a post-proxy-check callback in a file */
 | |
| #define REGISTER_POST_PROXY_CHECK(fct) \
 | |
| 	INITCALL1(STG_REGISTER, hap_register_post_proxy_check, (fct))
 | |
| 
 | |
| /* simplified way to declare a post-server-check callback in a file */
 | |
| #define REGISTER_POST_SERVER_CHECK(fct) \
 | |
| 	INITCALL1(STG_REGISTER, hap_register_post_server_check, (fct))
 | |
| 
 | |
| /* simplified way to declare a post-deinit callback in a file */
 | |
| #define REGISTER_POST_DEINIT(fct) \
 | |
| 	INITCALL1(STG_REGISTER, hap_register_post_deinit, (fct))
 | |
| 
 | |
| /* simplified way to declare a proxy-deinit callback in a file */
 | |
| #define REGISTER_PROXY_DEINIT(fct) \
 | |
| 	INITCALL1(STG_REGISTER, hap_register_proxy_deinit, (fct))
 | |
| 
 | |
| /* simplified way to declare a proxy-deinit callback in a file */
 | |
| #define REGISTER_SERVER_DEINIT(fct) \
 | |
| 	INITCALL1(STG_REGISTER, hap_register_server_deinit, (fct))
 | |
| 
 | |
| /* simplified way to declare a per-thread allocation callback in a file */
 | |
| #define REGISTER_PER_THREAD_ALLOC(fct) \
 | |
| 	INITCALL1(STG_REGISTER, hap_register_per_thread_alloc, (fct))
 | |
| 
 | |
| /* simplified way to declare a per-thread init callback in a file */
 | |
| #define REGISTER_PER_THREAD_INIT(fct) \
 | |
| 	INITCALL1(STG_REGISTER, hap_register_per_thread_init, (fct))
 | |
| 
 | |
| /* simplified way to declare a per-thread deinit callback in a file */
 | |
| #define REGISTER_PER_THREAD_DEINIT(fct) \
 | |
| 	INITCALL1(STG_REGISTER, hap_register_per_thread_deinit, (fct))
 | |
| 
 | |
| /* simplified way to declare a per-thread free callback in a file */
 | |
| #define REGISTER_PER_THREAD_FREE(fct) \
 | |
| 	INITCALL1(STG_REGISTER, hap_register_per_thread_free, (fct))
 | |
| 
 | |
| #endif /* _HAPROXY_GLOBAL_H */
 | |
| 
 | |
| /*
 | |
|  * Local variables:
 | |
|  *  c-indent-level: 8
 | |
|  *  c-basic-offset: 8
 | |
|  * End:
 | |
|  */
 |