Bitcoin
Classes | Namespaces | Enumerations | Functions | Variables
system.h File Reference
#include <attributes.h>
#include <compat.h>
#include <compat/assumptions.h>
#include <fs.h>
#include <logging.h>
#include <sync.h>
#include <tinyformat.h>
#include <util/memory.h>
#include <util/threadnames.h>
#include <util/time.h>
#include <exception>
#include <map>
#include <set>
#include <stdint.h>
#include <string>
#include <utility>
#include <vector>
#include <boost/thread/condition_variable.hpp>

Go to the source code of this file.

Classes

struct  SectionInfo
 
class  ArgsManager
 
struct  ArgsManager::Arg
 

Namespaces

 util
 

Enumerations

enum  OptionsCategory {
  OptionsCategory::OPTIONS, OptionsCategory::CONNECTION, OptionsCategory::WALLET, OptionsCategory::WALLET_DEBUG_TEST,
  OptionsCategory::ZMQ, OptionsCategory::DEBUG_TEST, OptionsCategory::CHAINPARAMS, OptionsCategory::NODE_RELAY,
  OptionsCategory::BLOCK_CREATION, OptionsCategory::RPC, OptionsCategory::GUI, OptionsCategory::COMMANDS,
  OptionsCategory::REGISTER_COMMANDS, OptionsCategory::HIDDEN
}
 

Functions

int64_t GetStartupTime ()
 
std::string _ (const char *psz)
 
void SetupEnvironment ()
 
bool SetupNetworking ()
 
template<typename... Args>
bool error (const char *fmt, const Args &... args)
 
void PrintExceptionContinue (const std::exception *pex, const char *pszThread)
 
bool FileCommit (FILE *file)
 
bool TruncateFile (FILE *file, unsigned int length)
 
int RaiseFileDescriptorLimit (int nMinFD)
 
void AllocateFileRange (FILE *file, unsigned int offset, unsigned int length)
 
bool RenameOver (fs::path src, fs::path dest)
 
bool LockDirectory (const fs::path &directory, const std::string lockfile_name, bool probe_only=false)
 
void UnlockDirectory (const fs::path &directory, const std::string &lockfile_name)
 
bool DirIsWritable (const fs::path &directory)
 
bool CheckDiskSpace (const fs::path &dir, uint64_t additional_bytes=0)
 
void ReleaseDirectoryLocks ()
 
bool TryCreateDirectories (const fs::path &p)
 
fs::path GetDefaultDataDir ()
 
const fs::path & GetBlocksDir ()
 
const fs::path & GetDataDir (bool fNetSpecific=true)
 
void ClearDatadirCache ()
 
fs::path GetConfigFile (const std::string &confPath)
 
fs::path AbsPathForConfigVal (const fs::path &path, bool net_specific=true)
 
bool IsSwitchChar (char c)
 
bool HelpRequested (const ArgsManager &args)
 
void SetupHelpOptions (ArgsManager &args)
 
std::string HelpMessageGroup (const std::string &message)
 
std::string HelpMessageOpt (const std::string &option, const std::string &message)
 
int GetNumCores ()
 
template<typename Callable >
void TraceThread (const char *name, Callable func)
 
std::string CopyrightHolders (const std::string &strPrefix)
 
int ScheduleBatchPriority ()
 
template<typename Tdst , typename Tsrc >
void util::insert (Tdst &dst, const Tsrc &src)
 Simplification of std insertion. More...
 
template<typename TsetT , typename Tsrc >
void util::insert (std::set< TsetT > &dst, const Tsrc &src)
 

Variables

const char *const BITCOIN_CONF_FILENAME
 
const std::function< std::string(const char *)> G_TRANSLATION_FUN
 
ArgsManager gArgs
 

Enumeration Type Documentation

◆ OptionsCategory

enum OptionsCategory
strong
Enumerator
OPTIONS 
CONNECTION 
WALLET 
WALLET_DEBUG_TEST 
ZMQ 
DEBUG_TEST 
CHAINPARAMS 
NODE_RELAY 
BLOCK_CREATION 
RPC 
GUI 
COMMANDS 
REGISTER_COMMANDS 
HIDDEN 

Function Documentation

◆ _()

std::string _ ( const char *  psz)
inline

Translation function. If no translation function is set, simply return the input.

◆ AbsPathForConfigVal()

fs::path AbsPathForConfigVal ( const fs::path &  path,
bool  net_specific = true 
)

Most paths passed as configuration arguments are treated as relative to the datadir if they are not absolute.

Parameters
pathThe path to be conditionally prefixed with datadir.
net_specificForwarded to GetDataDir().
Returns
The normalized path.

◆ AllocateFileRange()

void AllocateFileRange ( FILE *  file,
unsigned int  offset,
unsigned int  length 
)

this function tries to make a particular range of a file allocated (corresponding to disk space) it is advisory, and the range specified in the arguments will never contain live data

◆ CheckDiskSpace()

bool CheckDiskSpace ( const fs::path &  dir,
uint64_t  additional_bytes = 0 
)

◆ ClearDatadirCache()

void ClearDatadirCache ( )

Tests only

◆ CopyrightHolders()

std::string CopyrightHolders ( const std::string &  strPrefix)

◆ DirIsWritable()

bool DirIsWritable ( const fs::path &  directory)

◆ error()

template<typename... Args>
bool error ( const char *  fmt,
const Args &...  args 
)

◆ FileCommit()

bool FileCommit ( FILE *  file)

◆ GetBlocksDir()

const fs::path& GetBlocksDir ( )

◆ GetConfigFile()

fs::path GetConfigFile ( const std::string &  confPath)

◆ GetDataDir()

const fs::path& GetDataDir ( bool  fNetSpecific = true)

◆ GetDefaultDataDir()

fs::path GetDefaultDataDir ( )

◆ GetNumCores()

int GetNumCores ( )

Return the number of cores available on the current system.

Note
This does count virtual cores, such as those provided by HyperThreading.

◆ GetStartupTime()

int64_t GetStartupTime ( )

Server/client environment: argument handling, config file parsing, thread wrappers, startup time

◆ HelpMessageGroup()

std::string HelpMessageGroup ( const std::string &  message)

Format a string to be used as group of options in help messages

Parameters
messageGroup name (e.g. "RPC server options:")
Returns
the formatted string

◆ HelpMessageOpt()

std::string HelpMessageOpt ( const std::string &  option,
const std::string &  message 
)

Format a string to be used as option description in help messages

Parameters
optionOption message (e.g. "-rpcuser=<user>")
messageOption description (e.g. "Username for JSON-RPC connections")
Returns
the formatted string

◆ HelpRequested()

bool HelpRequested ( const ArgsManager args)
Returns
true if help has been requested via a command-line arg

◆ IsSwitchChar()

bool IsSwitchChar ( char  c)
inline

◆ LockDirectory()

bool LockDirectory ( const fs::path &  directory,
const std::string  lockfile_name,
bool  probe_only = false 
)

◆ PrintExceptionContinue()

void PrintExceptionContinue ( const std::exception *  pex,
const char *  pszThread 
)

◆ RaiseFileDescriptorLimit()

int RaiseFileDescriptorLimit ( int  nMinFD)

this function tries to raise the file descriptor limit to the requested number. It returns the actual file descriptor limit (which may be more or less than nMinFD)

◆ ReleaseDirectoryLocks()

void ReleaseDirectoryLocks ( )

Release all directory locks. This is used for unit testing only, at runtime the global destructor will take care of the locks.

◆ RenameOver()

bool RenameOver ( fs::path  src,
fs::path  dest 
)

◆ ScheduleBatchPriority()

int ScheduleBatchPriority ( )

On platforms that support it, tell the kernel the calling thread is CPU-intensive and non-interactive. See SCHED_BATCH in sched(7) for details.

Returns
The return value of sched_setschedule(), or 1 on systems without sched_setschedule().

◆ SetupEnvironment()

void SetupEnvironment ( )

◆ SetupHelpOptions()

void SetupHelpOptions ( ArgsManager args)

Add help options to the args manager

◆ SetupNetworking()

bool SetupNetworking ( )

◆ TraceThread()

template<typename Callable >
void TraceThread ( const char *  name,
Callable  func 
)

.. and a wrapper that just calls func once

◆ TruncateFile()

bool TruncateFile ( FILE *  file,
unsigned int  length 
)

◆ TryCreateDirectories()

bool TryCreateDirectories ( const fs::path &  p)

Ignores exceptions thrown by Boost's create_directories if the requested directory exists. Specifically handles case where path p exists, but it wasn't possible for the user to write to the parent directory.

◆ UnlockDirectory()

void UnlockDirectory ( const fs::path &  directory,
const std::string &  lockfile_name 
)

Variable Documentation

◆ BITCOIN_CONF_FILENAME

const char* const BITCOIN_CONF_FILENAME

◆ G_TRANSLATION_FUN

const std::function<std::string(const char*)> G_TRANSLATION_FUN

Translate a message to the native language of the user.

Translate string to current locale using Qt.

◆ gArgs

ArgsManager gArgs