tools.cc File Reference
#include "squid.h"
#include "anyp/PortCfg.h"
#include "base/Subscription.h"
#include "client_side.h"
#include "fatal.h"
#include "fde.h"
#include "fqdncache.h"
#include "fs_io.h"
#include "htcp.h"
#include "http/Stream.h"
#include "ICP.h"
#include "ip/Intercept.h"
#include "ip/QosConfig.h"
#include "ipc/Coordinator.h"
#include "ipc/Kids.h"
#include "ipcache.h"
#include "MemBuf.h"
#include "sbuf/Stream.h"
#include "SquidConfig.h"
#include "SquidMath.h"
#include "store/Disks.h"
#include "tools.h"
#include "wordlist.h"
#include <cerrno>
Include dependency graph for tools.cc:

Go to the source code of this file.

Macros

#define DEAD_MSG   "\The Squid Cache (version %s) died.\n\\n\You've encountered a fatal error in the Squid Cache version %s.\n\If a core file was created (possibly in the swap directory),\n\please execute 'gdb squid core' or 'dbx squid core', then type 'where',\n\and report the trace back to squid-bugs@lists.squid-cache.org.\n\\n\Thanks!\n"
 
#define HAVE_GETPAGESIZE   0
 

Functions

static void mail_warranty (void)
 
static void restoreCapabilities (bool keep)
 
void releaseServerSockets (void)
 
static char * dead_msg (void)
 
void dumpMallocStats (void)
 
void squid_getrusage (struct rusage *r)
 
double rusage_cputime (struct rusage *r)
 
int rusage_maxrss (struct rusage *r)
 
int rusage_pagefaults (struct rusage *r)
 
static void makeTraceable ()
 
static void setTraceability ()
 
void PrintRusage (void)
 
void death (int sig)
 
void BroadcastSignalIfAny (int &sig)
 
void sigusr2_handle (int sig)
 
void debug_trap (const char *message)
 
const char * getMyHostname (void)
 
const char * uniqueHostname (void)
 
void leave_suid (void)
 
void enter_suid (void)
 
void no_suid (void)
 
bool IamMasterProcess ()
 whether the current process is the parent of all other Squid processes More...
 
bool IamWorkerProcess ()
 whether the current process handles HTTP transactions and such More...
 
bool IamDiskProcess ()
 whether the current process is dedicated to managing a cache_dir More...
 
bool InDaemonMode ()
 Whether we are running in daemon mode. More...
 
bool UsingSmp ()
 Whether there should be more than one worker process running. More...
 
bool IamCoordinatorProcess ()
 whether the current process coordinates worker processes More...
 
bool IamPrimaryProcess ()
 
int NumberOfKids ()
 number of Kid processes as defined in src/ipc/Kid.h More...
 
SBuf ProcessRoles ()
 a string describing this process roles such as worker or coordinator More...
 
void setMaxFD (void)
 
void setSystemLimits (void)
 
void squid_signal (int sig, SIGHDLR *func, int flags)
 
void logsFlush (void)
 
void debugObj (int section, int level, const char *label, void *obj, ObjPackMethod pm)
 
void parseEtcHosts (void)
 
int getMyPort (void)
 
void setUmask (mode_t mask)
 
void strwordquote (MemBuf *mb, const char *str)
 
void keepCapabilities (void)
 
pid_t WaitForOnePid (pid_t pid, PidStatus &status, int flags)
 

Variables

int DebugSignal = -1
 
SBuf service_name (APP_SHORTNAME)
 
static char tmp_error_buf [32768]
 

Macro Definition Documentation

◆ DEAD_MSG

#define DEAD_MSG   "\The Squid Cache (version %s) died.\n\\n\You've encountered a fatal error in the Squid Cache version %s.\n\If a core file was created (possibly in the swap directory),\n\please execute 'gdb squid core' or 'dbx squid core', then type 'where',\n\and report the trace back to squid-bugs@lists.squid-cache.org.\n\\n\Thanks!\n"

Definition at line 58 of file tools.cc.

◆ HAVE_GETPAGESIZE

#define HAVE_GETPAGESIZE   0

Definition at line 245 of file tools.cc.

Function Documentation

◆ BroadcastSignalIfAny()

void BroadcastSignalIfAny ( int sig)

Definition at line 415 of file tools.cc.

References Kids::count(), Kids::get(), IamMasterProcess(), and TheKids.

Referenced by masterCheckAndBroadcastSignals().

◆ dead_msg()

static char * dead_msg ( void  )
static

Definition at line 104 of file tools.cc.

References DEAD_MSG, LOCAL_ARRAY, and version_string.

Referenced by death(), and mail_warranty().

◆ death()

◆ debug_trap()

void debug_trap ( const char *  message)

◆ debugObj()

void debugObj ( int  section,
int  level,
const char *  label,
void *  obj,
ObjPackMethod  pm 
)

Definition at line 935 of file tools.cc.

References assert, MemBuf::buf, MemBuf::clean(), debugs, and MemBuf::init().

Referenced by clientInterpretRequestHeaders(), and internalStart().

◆ dumpMallocStats()

void dumpMallocStats ( void  )

Definition at line 163 of file tools.cc.

References debug_log, and Math::intPercent().

Referenced by death(), fatal_common(), and SquidShutdown().

◆ enter_suid()

◆ getMyHostname()

◆ getMyPort()

int getMyPort ( void  )

◆ IamCoordinatorProcess()

bool IamCoordinatorProcess ( )

Definition at line 699 of file tools.cc.

References pkCoordinator, and TheProcessKind.

Referenced by IamPrimaryProcess(), ProcessRoles(), and SquidMain().

◆ IamDiskProcess()

bool IamDiskProcess ( )

Definition at line 681 of file tools.cc.

References pkDisker, and TheProcessKind.

Referenced by ProcessRoles().

◆ IamMasterProcess()

◆ IamPrimaryProcess()

bool IamPrimaryProcess ( )

whether the current process is dedicated to doing things that only a single process should do, such as PID file maintenance and WCCP

Definition at line 705 of file tools.cc.

References Config, IamCoordinatorProcess(), IamWorkerProcess(), NumberOfKids(), opt_no_daemon, and SquidConfig::workers.

Referenced by Mgr::InfoAction::dump(), mainInitialize(), mainReconfigureFinish(), serverConnectionsClose(), serverConnectionsOpen(), and SquidMain().

◆ IamWorkerProcess()

bool IamWorkerProcess ( )

Definition at line 671 of file tools.cc.

References Config, opt_no_daemon, pkWorker, TheProcessKind, and SquidConfig::workers.

Referenced by IamPrimaryProcess(), and ProcessRoles().

◆ InDaemonMode()

◆ keepCapabilities()

void keepCapabilities ( void  )

Definition at line 1119 of file tools.cc.

References Ip::Interceptor.

◆ leave_suid()

◆ logsFlush()

void logsFlush ( void  )

Definition at line 928 of file tools.cc.

References debug_log.

◆ mail_warranty()

static void mail_warranty ( void  )
static

◆ makeTraceable()

static void makeTraceable ( )
static

Make the process traceable if possible. Call setTraceability() instead! Traceable processes may support attachment via ptrace(2) or ktrace(2), debugging sysctls, hwpmc(4), dtrace(1) and core dumping.

Definition at line 285 of file tools.cc.

References debugs, Here, ToSBuf(), and xstrerr().

Referenced by setTraceability().

◆ no_suid()

void no_suid ( void  )

◆ NumberOfKids()

◆ parseEtcHosts()

◆ PrintRusage()

void PrintRusage ( void  )

◆ ProcessRoles()

SBuf ProcessRoles ( )

◆ releaseServerSockets()

void releaseServerSockets ( void  )

Definition at line 89 of file tools.cc.

References clientConnectionsClose(), and icpClosePorts().

Referenced by death().

◆ restoreCapabilities()

static void restoreCapabilities ( bool  keep)
static

Definition at line 1130 of file tools.cc.

References Ip::Interceptor, and Ip::Qos::TheConfig.

Referenced by leave_suid(), and no_suid().

◆ rusage_cputime()

double rusage_cputime ( struct rusage r)

Definition at line 235 of file tools.cc.

References double, rusage::ru_stime, and rusage::ru_utime.

Referenced by GetCountersStats(), GetInfo(), PrintRusage(), snmp_prfSysFn(), and statAvgTick().

◆ rusage_maxrss()

int rusage_maxrss ( struct rusage r)

Definition at line 250 of file tools.cc.

References rusage::ru_maxrss.

Referenced by GetInfo(), PrintRusage(), and snmp_prfSysFn().

◆ rusage_pagefaults()

int rusage_pagefaults ( struct rusage r)

Definition at line 271 of file tools.cc.

References rusage::ru_majflt.

Referenced by GetCountersStats(), GetInfo(), PrintRusage(), snmp_prfSysFn(), and statAvgTick().

◆ setMaxFD()

void setMaxFD ( void  )

Figure out the number of supported filedescriptors

Definition at line 759 of file tools.cc.

References Config, DBG_CRITICAL, debugs, SquidConfig::max_filedescriptors, Squid_MaxFD, and xstrerr().

Referenced by StartUsingConfig().

◆ setSystemLimits()

void setSystemLimits ( void  )

◆ setTraceability()

static void setTraceability ( )
static

Make the process traceable if necessary.

See also
makeTraceable()

Definition at line 311 of file tools.cc.

References Config, SquidConfig::coredump_dir, CurrentException(), DBG_IMPORTANT, debugs, Debug::Extra(), and makeTraceable().

Referenced by enter_suid(), leave_suid(), and no_suid().

◆ setUmask()

void setUmask ( mode_t  mask)

Definition at line 1066 of file tools.cc.

Referenced by mainReconfigureFinish(), and SquidMain().

◆ sigusr2_handle()

◆ squid_getrusage()

void squid_getrusage ( struct rusage r)

◆ squid_signal()

void squid_signal ( int  sig,
SIGHDLR func,
int  flags 
)

Definition at line 870 of file tools.cc.

References DBG_CRITICAL, debugs, and xstrerr().

Referenced by mainInitialize(), and watch_child().

◆ strwordquote()

void strwordquote ( MemBuf mb,
const char *  str 
)

Definition at line 1077 of file tools.cc.

References MemBuf::append().

Referenced by Format::Format::assemble(), and makeExternalAclKey().

◆ uniqueHostname()

const char * uniqueHostname ( void  )

◆ UsingSmp()

◆ WaitForOnePid()

pid_t WaitForOnePid ( pid_t  pid,
PidStatus status,
int  flags 
)

Compatibility wrapper function for waitpid \pid the pid of child process to wait for.

Parameters
statusthe exit status returned by waitpid
flagsWNOHANG or 0

Definition at line 1177 of file tools.cc.

References pid.

Referenced by mainStartScript(), and WaitForAnyPid().

Variable Documentation

◆ DebugSignal

int DebugSignal = -1

Definition at line 70 of file tools.cc.

Referenced by sigusr2_handle().

◆ service_name

SBuf service_name(APP_SHORTNAME) ( APP_SHORTNAME  )

◆ tmp_error_buf

char tmp_error_buf[32768]
static

Definition at line 86 of file tools.cc.

Referenced by setSystemLimits().

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors