Thrill  0.1
foxxll Namespace Reference

FOXXLL library namespace More...

Namespaces

 async_schedule_local
 
 mng_local
 Block Manager Internals.
 

Classes

class  addressable_fifo_queue
 
class  addressable_priority_queue
 
struct  aligned_alloc_settings
 
class  bad_ext_alloc
 
class  bad_parameter
 
struct  basic_allocation_strategy
 
class  BID
 
class  BID< 0 >
 Specialization of block identifier class (BID) for variable size block size. More...
 
class  block_manager
 Block manager class. More...
 
class  block_prefetcher
 
class  block_scheduler
 
class  block_scheduler_algorithm
 Interface of a block scheduling algorithm. More...
 
class  block_scheduler_algorithm_offline_lfd
 Block scheduling algorithm caching via the longest forward distance policy (offline). More...
 
class  block_scheduler_algorithm_offline_lru_prefetching
 
class  block_scheduler_algorithm_online_lru
 Block scheduling algorithm caching via the least recently used policy (online). More...
 
class  block_scheduler_algorithm_simulation
 Pseudo block scheduling algorithm only recording the request sequence. More...
 
class  buf_istream
 
class  buf_istream_reverse
 
class  buf_ostream
 
class  buffered_writer
 
struct  CASE
 
class  config
 
class  disk_block_allocator
 This class manages allocation of blocks onto a single disk. More...
 
class  disk_config
 
class  disk_queued_file
 Implementation of some file methods based on serving_request. More...
 
class  disk_queues
 
class  fake_timer
 Class fake_timer is a drop-in replacement for timer, which does nothing. More...
 
class  file
 
class  file_stats
 
class  file_stats_data
 
class  fileperblock_file
 
struct  first_disk_only
 
struct  fully_random
 
struct  interleaved_alloc_traits
 
struct  interleaved_alloc_traits< fully_random >
 
struct  interleaved_alloc_traits< random_cyclic >
 
struct  interleaved_alloc_traits< random_cyclic_disk >
 
struct  interleaved_alloc_traits< random_cyclic_flash >
 
struct  interleaved_alloc_traits< simple_random >
 
struct  interleaved_alloc_traits< single_disk >
 
struct  interleaved_alloc_traits< striping >
 
struct  interleaved_fully_random
 
struct  interleaved_random_cyclic
 
struct  interleaved_simple_random
 
struct  interleaved_striping
 
class  io_error
 
class  memory_file
 Implementation of file based on new[] and memcpy. More...
 
class  new_alloc
 
struct  new_alloc_rebind
 
struct  new_alloc_rebind< Type, Type >
 
struct  NilCase
 
struct  offset_allocator
 
class  onoff_switch
 
class  prefetch_pool
 Implements dynamically resizable prefetching pool. More...
 
struct  random_cyclic
 
struct  random_cyclic_disk
 
struct  random_cyclic_flash
 
class  read_write_pool
 Implements dynamically resizable buffered writing and prefetched reading pool. More...
 
class  request
 Request object encapsulating basic properties like file and offset. More...
 
class  request_interface
 
class  request_queue
 Interface of a request_queue to which requests can be added and canceled. More...
 
class  request_queue_impl_1q
 
class  request_queue_impl_qwqr
 
class  request_queue_impl_worker
 
class  request_with_state
 Request with completion shared_state. More...
 
class  request_with_waiters
 Request that is aware of threads waiting for it to complete. More...
 
class  resource_error
 
class  scoped_print_iostats
 Simple scoped iostats reporter which takes a message and reports the relative IO performance on destruction. More...
 
class  scoped_print_timer
 Simple scoped timer, which takes a text message and prints the duration until the scope is destroyed. More...
 
class  serving_request
 Request which serves an I/O by calling the synchronous routine of the file. More...
 
class  set_switch_handler
 
class  shared_state
 
struct  simple_random
 
struct  single_disk
 
class  singleton
 
class  stats
 
class  stats_data
 
struct  striping
 
class  swappable_block
 
class  SWITCH
 
class  SWITCH< Tag, NilCase >
 
class  syscall_file
 Implementation of file based on UNIX syscalls. More...
 
class  timer
 Class timer is a simple stop watch timer. More...
 
class  typed_block
 
class  ufs_file_base
 Base for UNIX file system implementations. More...
 
class  uint_pair
 Construct an 40-bit or 48-bit unsigned integer stored in five or six bytes. More...
 
class  unreachable
 
class  write_pool
 Implements dynamically resizable buffered writing pool. More...
 

Typedefs

template<size_t BlockSize>
using BIDArray = tlx::simple_vector< BID< BlockSize > >
 
using completion_handler = tlx::delegate< void(request *r, bool success)>
 completion handler More...
 
using default_alloc_strategy = foxxll::random_cyclic
 
using external_diff_type = int64_t
 
using external_size_type = uint64_t
 
using file_ptr = tlx::counting_ptr< file >
 A reference counting pointer for file. More...
 
using request_ptr = tlx::counting_ptr< request >
 A reference counting pointer for request. More...
 
using uint40 = uint_pair< uint8_t >
 Construct a 40-bit unsigned integer stored in five bytes. More...
 
using uint48 = uint_pair< uint16_t >
 Construct a 48-bit unsigned integer stored in six bytes. More...
 

Functions

template<typename HighType >
class foxxll::uint_pair __attribute__ ((packed))
 
static std::string add_IEC_binary_multiplier (const external_size_type number, const std::string &unit="")
 
static std::string add_SI_multiplier (external_size_type number, const std::string &unit="")
 
template<size_t Alignment>
void * aligned_alloc (size_t size, size_t meta_info_size=0)
 
template<size_t Alignment>
void aligned_dealloc (void *ptr)
 
template<typename Integral >
std::make_signed< Integral >::type as_signed (Integral value)
 Return the given value casted to the corresponding signed type. More...
 
template<typename Integral >
std::make_unsigned< Integral >::type as_unsigned (Integral value)
 Return the given value casted to the corresponding unsigned type. More...
 
int64_t atoi64 (const char *s)
 
uint64_t atouint64 (const char *s)
 
template<class RequestIterator >
std::iterator_traits< RequestIterator >::difference_type cancel_all (RequestIterator reqs_begin, RequestIterator reqs_end)
 
int check_library_version ()
 Check for a mismatch between library and headers. More...
 
void compute_prefetch_schedule (size_t *first, size_t *last, size_t *out_first, size_t m, size_t D)
 
template<typename RunType >
void compute_prefetch_schedule (const RunType &input, size_t *out_first, size_t m, size_t D)
 
template<typename BidIteratorType >
void compute_prefetch_schedule (BidIteratorType input_begin, BidIteratorType input_end, size_t *out_first, size_t m, size_t D)
 
void compute_prefetch_schedule (const size_t *first, const size_t *last, size_t *out_first, size_t m, size_t D)
 
file_ptr create_file (const std::string &io_impl, const std::string &filename, int options, int physical_device_id=file::DEFAULT_QUEUE, int disk_allocator_id=file::NO_ALLOCATOR)
 create fileio object from io_impl string and a few parameters More...
 
file_ptr create_file (disk_config &config, int mode, int disk_allocator_id=file::NO_ALLOCATOR)
 create fileio object from disk_config parameter More...
 
template<typename Integral , typename Integral2 >
std::remove_const< Integral >::type div_ceil (Integral n, Integral2 d)
 
static bool exist_file (const std::string &path)
 
std::string get_library_version_string ()
 returns "X.Y.Z" version string of library More...
 
std::string get_library_version_string_long ()
 returns longer "X.Y.Z (feature) (version)" string of library More...
 
std::string get_version_string ()
 Return "X.Y.Z" version string (of headers) More...
 
std::string get_version_string_long ()
 Return longer "X.Y.Z (feature) (version)" version string (of headers) More...
 
size_t longhash1 (uint64_t key_)
 
template<class Type1 , class Type2 >
bool operator!= (const new_alloc< Type1 > &, const new_alloc< Type2 > &) noexcept
 
std::ostream & operator<< (std::ostream &out, const request &req)
 
template<size_t BlockSize>
std::ostream & operator<< (std::ostream &s, const BID< BlockSize > &bid)
 
std::ostream & operator<< (std::ostream &o, const stats &s)
 
template<class Type1 , class Type2 >
bool operator== (const new_alloc< Type1 > &, const new_alloc< Type2 > &) noexcept
 
template<class RequestIterator >
RequestIterator poll_any (RequestIterator reqs_begin, RequestIterator reqs_end)
 
static bool poll_any (request_ptr req_array[], size_t count, size_t &index)
 
template<class Container >
Container::value_type pop (Container &c)
 
template<class Container >
Container::value_type pop_back (Container &c)
 
template<class Container >
Container::value_type pop_begin (Container &c)
 
template<class Container >
Container::value_type pop_front (Container &c)
 
void print_library_version_mismatch ()
 Check and print mismatch between header and library versions. More...
 
int register_exit_handler (void(*function)(void))
 
template<typename Integral >
Integral round_up_to_power_of_two (Integral n, unsigned power)
 round n up to next larger multiple of 2^power. example: (48,4) = 64, (48,3) = 48. More...
 
void run_exit_handlers ()
 
template<class Type >
void swap_1D_arrays (Type *a, Type *b, size_t size)
 
static double timestamp ()
 Returns number of seconds since the epoch, high resolution. More...
 
template<typename Type >
std::string to_str (const Type &t)
 Format any ostream-able type into a string. More...
 
int version_integer ()
 return integer version number of the FOXXLL library More...
 
int version_major ()
 return X if the FOXXLL library version is X.Y.Z More...
 
int version_minor ()
 return Y if the FOXXLL library version is X.Y.Z More...
 
int version_patch ()
 return Z if the FOXXLL library version is X.Y.Z More...
 
template<class RequestIterator >
void wait_all (RequestIterator reqs_begin, RequestIterator reqs_end)
 Collection of functions to track statuses of a number of requests. More...
 
static void wait_all (request_ptr req_array[], size_t count)
 
template<class RequestIterator >
RequestIterator wait_any (RequestIterator reqs_begin, RequestIterator reqs_end)
 
static size_t wait_any (request_ptr req_array[], size_t count)
 

Variables

constexpr size_t BlockAlignment = 4096
 
constexpr bool debug_aligned_alloc = false
 
constexpr bool debug_typed_block = false
 
const int DEFAULT = ~(~0u >> 1)
 

Detailed Description

FOXXLL library namespace

Typedef Documentation

◆ external_diff_type

using external_diff_type = int64_t

Definition at line 28 of file types.hpp.

◆ external_size_type

using external_size_type = uint64_t

Definition at line 27 of file types.hpp.

Function Documentation

◆ __attribute__()

class foxxll::uint_pair foxxll::__attribute__ ( (packed)  )

◆ aligned_alloc()

void* foxxll::aligned_alloc ( size_t  size,
size_t  meta_info_size = 0 
)
inline

Definition at line 48 of file aligned_alloc.hpp.

References div_ceil(), free(), malloc(), realloc(), TLX_LOG1, and TLX_LOGC.

◆ aligned_dealloc()

void foxxll::aligned_dealloc ( void *  ptr)
inline

Definition at line 122 of file aligned_alloc.hpp.

References free(), and TLX_LOGC.

◆ as_signed()

std::make_signed<Integral>::type foxxll::as_signed ( Integral  value)

Return the given value casted to the corresponding signed type.

Definition at line 39 of file types.hpp.

References gen_data::value.

Referenced by fileperblock_file< base_file_type >::export_files().

◆ as_unsigned()

std::make_unsigned<Integral>::type foxxll::as_unsigned ( Integral  value)

Return the given value casted to the corresponding unsigned type.

Definition at line 32 of file types.hpp.

References gen_data::value.

◆ atoi64()

int64_t foxxll::atoi64 ( const char *  s)
inline

Definition at line 43 of file utils.hpp.

◆ atouint64()

uint64_t foxxll::atouint64 ( const char *  s)
inline

Definition at line 52 of file utils.hpp.

◆ check_library_version()

int foxxll::check_library_version ( )
inline

Check for a mismatch between library and headers.

Definition at line 72 of file version.hpp.

References version_major(), version_minor(), and version_patch().

Referenced by print_library_version_mismatch().

◆ compute_prefetch_schedule() [1/4]

void foxxll::compute_prefetch_schedule ( size_t *  first,
size_t *  last,
size_t *  out_first,
size_t  m,
size_t  D 
)
inline

Definition at line 34 of file async_schedule.hpp.

References compute_prefetch_schedule().

◆ compute_prefetch_schedule() [2/4]

void foxxll::compute_prefetch_schedule ( const RunType &  input,
size_t *  out_first,
size_t  m,
size_t  D 
)

◆ compute_prefetch_schedule() [3/4]

void foxxll::compute_prefetch_schedule ( BidIteratorType  input_begin,
BidIteratorType  input_end,
size_t *  out_first,
size_t  m,
size_t  D 
)

◆ compute_prefetch_schedule() [4/4]

void compute_prefetch_schedule ( const size_t *  first,
const size_t *  last,
size_t *  out_first,
size_t  m,
size_t  D 
)

◆ create_file() [1/2]

file_ptr create_file ( const std::string &  io_impl,
const std::string &  filename,
int  options,
int  physical_device_id,
int  disk_allocator_id 
)

create fileio object from io_impl string and a few parameters

Definition at line 29 of file create_file.cpp.

References file::DIRECT, disk_config::direct, disk_config::DIRECT_OFF, disk_config::DIRECT_ON, disk_config::DIRECT_TRY, disk_config::queue, and file::REQUIRE_DIRECT.

Referenced by block_manager::block_manager().

◆ create_file() [2/2]

◆ div_ceil()

std::remove_const<Integral>::type foxxll::div_ceil ( Integral  n,
Integral2  d 
)
inline

Definition at line 64 of file utils.hpp.

Referenced by aligned_alloc().

◆ exist_file()

static bool foxxll::exist_file ( const std::string &  path)
inlinestatic

Definition at line 42 of file config.cpp.

References TLX_LOG0.

Referenced by config::find_config().

◆ get_library_version_string()

std::string get_library_version_string ( )

returns "X.Y.Z" version string of library

Definition at line 40 of file version.cpp.

References get_version_string().

Referenced by get_version_string_long(), and print_library_version_mismatch().

◆ get_library_version_string_long()

std::string get_library_version_string_long ( )

returns longer "X.Y.Z (feature) (version)" string of library

Definition at line 45 of file version.cpp.

References get_version_string_long().

Referenced by get_version_string_long().

◆ get_version_string()

std::string foxxll::get_version_string ( )
inline

Return "X.Y.Z" version string (of headers)

Definition at line 34 of file version.hpp.

Referenced by get_library_version_string().

◆ get_version_string_long()

std::string foxxll::get_version_string_long ( )
inline

Return longer "X.Y.Z (feature) (version)" version string (of headers)

Definition at line 40 of file version.hpp.

References get_library_version_string(), get_library_version_string_long(), version_integer(), version_major(), version_minor(), and version_patch().

Referenced by get_library_version_string_long(), and config::initialize().

◆ longhash1()

size_t foxxll::longhash1 ( uint64_t  key_)
inline

Definition at line 75 of file utils.hpp.

◆ operator!=()

bool foxxll::operator!= ( const new_alloc< Type1 > &  ,
const new_alloc< Type2 > &   
)
inlinenoexcept

Definition at line 131 of file new_alloc.hpp.

◆ operator<<()

std::ostream& foxxll::operator<< ( std::ostream &  o,
const stats s 
)

Definition at line 375 of file iostats.cpp.

Referenced by request::check_nref(), and stats::get_pio_time().

◆ operator==()

bool foxxll::operator== ( const new_alloc< Type1 > &  ,
const new_alloc< Type2 > &   
)
inlinenoexcept

Definition at line 124 of file new_alloc.hpp.

◆ pop()

Container::value_type foxxll::pop ( Container &  c)
inline

Definition at line 109 of file utils.hpp.

◆ pop_back()

Container::value_type foxxll::pop_back ( Container &  c)
inline

Definition at line 125 of file utils.hpp.

◆ pop_begin()

◆ pop_front()

Container::value_type foxxll::pop_front ( Container &  c)
inline

Definition at line 117 of file utils.hpp.

◆ print_library_version_mismatch()

void foxxll::print_library_version_mismatch ( )
inline

Check and print mismatch between header and library versions.

Definition at line 84 of file version.hpp.

References check_library_version(), get_library_version_string(), and tlx_die.

Referenced by config::initialize().

◆ register_exit_handler()

int register_exit_handler ( void(*)(void)  function)

Definition at line 35 of file exithandler.cpp.

Referenced by singleton< disk_queues >::create_instance(), and run_exit_handlers().

◆ round_up_to_power_of_two()

Integral foxxll::round_up_to_power_of_two ( Integral  n,
unsigned  power 
)
inline

round n up to next larger multiple of 2^power. example: (48,4) = 64, (48,3) = 48.

Definition at line 97 of file utils.hpp.

◆ run_exit_handlers()

void run_exit_handlers ( )

Definition at line 41 of file exithandler.cpp.

References register_exit_handler().

◆ swap_1D_arrays()

void foxxll::swap_1D_arrays ( Type *  a,
Type *  b,
size_t  size 
)
inline

Definition at line 89 of file utils.hpp.

References tlx::swap().

◆ to_str()

std::string foxxll::to_str ( const Type &  t)

Format any ostream-able type into a string.

Definition at line 36 of file utils.hpp.

Referenced by disk_config::parse_line().

◆ version_integer()

int version_integer ( )

return integer version number of the FOXXLL library

Definition at line 35 of file version.cpp.

References FOXXLL_VERSION_INTEGER.

Referenced by get_version_string_long().

◆ version_major()

int version_major ( )

return X if the FOXXLL library version is X.Y.Z

Definition at line 20 of file version.cpp.

Referenced by check_library_version(), and get_version_string_long().

◆ version_minor()

int version_minor ( )

return Y if the FOXXLL library version is X.Y.Z

Definition at line 25 of file version.cpp.

Referenced by check_library_version(), and get_version_string_long().

◆ version_patch()

int version_patch ( )

return Z if the FOXXLL library version is X.Y.Z

Definition at line 30 of file version.cpp.

Referenced by check_library_version(), and get_version_string_long().

Variable Documentation

◆ debug_aligned_alloc

constexpr bool debug_aligned_alloc = false

Definition at line 26 of file aligned_alloc.hpp.

◆ debug_typed_block

constexpr bool debug_typed_block = false

Definition at line 31 of file typed_block.hpp.

◆ DEFAULT

const int DEFAULT = ~(~0u >> 1)

Definition at line 26 of file tmeta.hpp.