]> git.ipfire.org Git - thirdparty/squid.git/blame - src/tools.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / tools.h
CommitLineData
fc54b8d2 1/*
ef57eb7b 2 * Copyright (C) 1996-2016 The Squid Software Foundation and contributors
fc54b8d2 3 *
bbc27441
AJ
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
fc54b8d2
FC
7 */
8
bbc27441
AJ
9/* DEBUG: section 21 Misc Functions */
10
fc54b8d2
FC
11#ifndef SQUID_TOOLS_H_
12#define SQUID_TOOLS_H_
13
8b505ba9 14#include "SBuf.h"
fc54b8d2
FC
15#include "typedefs.h"
16
17class MemBuf;
18
a8e49d54
FC
19extern int DebugSignal;
20
8b505ba9
AJ
21/// The Squid -n parameter service name.
22/// Default is APP_SHORTNAME ('squid').
23extern SBuf service_name;
24
8a648e8d
FC
25void parseEtcHosts(void);
26int getMyPort(void);
27void setUmask(mode_t mask);
28void strwordquote(MemBuf * mb, const char *str);
fc54b8d2 29
0a647ffb
AJ
30class Packable;
31
32/* a common objPackInto interface; used by debugObj */
33typedef void (*ObjPackMethod) (void *obj, Packable * p);
34
fc54b8d2 35/* packs, then prints an object using debugs() */
8a648e8d 36void debugObj(int section, int level, const char *label, void *obj, ObjPackMethod pm);
fc54b8d2 37
d4b95209
FC
38/// callback type for signal handlers
39typedef void SIGHDLR(int sig);
40
8a648e8d
FC
41const char *getMyHostname(void);
42const char *uniqueHostname(void);
8d03bdb4 43
8a648e8d
FC
44void death(int sig);
45void sigusr2_handle(int sig);
46void sig_child(int sig);
47void sig_shutdown(int sig); ///< handles shutdown notifications from kids
48void leave_suid(void);
49void enter_suid(void);
50void no_suid(void);
51void writePidFile(void);
dbf55289 52void removePidFile();
8a648e8d
FC
53void setMaxFD(void);
54void setSystemLimits(void);
55void squid_signal(int sig, SIGHDLR *, int flags);
56pid_t readPidFile(void);
57void keepCapabilities(void);
58void BroadcastSignalIfAny(int& sig);
561076e2 59
5bed43d6 60/// whether the current process is the parent of all other Squid processes
8a648e8d 61bool IamMasterProcess();
5bed43d6
FC
62/**
63 * whether the current process is dedicated to doing things that only
64 * a single process should do, such as PID file maintenance and WCCP
65 */
8a648e8d 66bool IamPrimaryProcess();
5bed43d6 67/// whether the current process coordinates worker processes
8a648e8d 68bool IamCoordinatorProcess();
5bed43d6 69/// whether the current process handles HTTP transactions and such
8a648e8d 70bool IamWorkerProcess();
5bed43d6 71/// whether the current process is dedicated to managing a cache_dir
8a648e8d 72bool IamDiskProcess();
5bed43d6 73/// Whether we are running in daemon mode
8a648e8d 74bool InDaemonMode(); // try using specific Iam*() checks above first
5bed43d6 75/// Whether there should be more than one worker process running
8a648e8d 76bool UsingSmp(); // try using specific Iam*() checks above first
5bed43d6 77/// number of Kid processes as defined in src/ipc/Kid.h
8a648e8d 78int NumberOfKids();
5bed43d6 79/// a string describing this process roles such as worker or coordinator
1fdc4f42 80SBuf ProcessRoles();
5bed43d6 81
8a648e8d 82void debug_trap(const char *);
561076e2 83
8a648e8d 84void logsFlush(void);
a8e49d54 85
8a648e8d
FC
86void squid_getrusage(struct rusage *r);
87double rusage_cputime(struct rusage *r);
88int rusage_maxrss(struct rusage *r);
89int rusage_pagefaults(struct rusage *r);
90void releaseServerSockets(void);
91void PrintRusage(void);
92void dumpMallocStats(void);
a8e49d54 93
dbf55289
CT
94#if _SQUID_NEXT_
95typedef union wait PidStatus;
96#else
97typedef int PidStatus;
98#endif
99
100/**
101 * Compatibility wrapper function for waitpid
102 * \pid the pid of child proccess to wait for.
103 * \param status the exit status returned by waitpid
104 * \param flags WNOHANG or 0
105 */
106pid_t WaitForOnePid(pid_t pid, PidStatus &status, int flags);
107
108/**
109 * Wait for state changes in any of the kid processes.
110 * Equivalent to waitpid(-1, ...) system call
111 * \param status the exit status returned by waitpid
112 * \param flags WNOHANG or 0
113 */
114inline pid_t WaitForAnyPid(PidStatus &status, int flags)
115{
116 return WaitForOnePid(-1, status, flags);
117}
118
fc54b8d2 119#endif /* SQUID_TOOLS_H_ */
f53969cc 120