/usr/include/stxxl/bits/utils/malloc.h is in libstxxl-dev 1.4.0-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | /***************************************************************************
* include/stxxl/bits/utils/malloc.h
*
* Part of the STXXL. See http://stxxl.sourceforge.net
*
* Copyright (C) 2003 Roman Dementiev <dementiev@mpi-sb.mpg.de>
* Copyright (C) 2009 Andreas Beckmann <beckmann@cs.uni-frankfurt.de>
*
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
**************************************************************************/
#ifndef STXXL_UTILS_MALLOC_HEADER
#define STXXL_UTILS_MALLOC_HEADER
#include <stxxl/bits/config.h>
#include <ostream>
#if STXXL_HAVE_MALLINFO_PROTO
#include <malloc.h>
#endif
#include <cstdlib>
#include <stxxl/bits/namespace.h>
#include <stxxl/bits/unused.h>
STXXL_BEGIN_NAMESPACE
//! Access to some useful malloc statistics.
//! malloc is default C++ allocator
class malloc_stats
{
#if STXXL_HAVE_MALLINFO_PROTO
public:
typedef int return_type;
//! Returns number of bytes allocated from system not including mmapped regions.
return_type from_system_nmmap() const
{
struct mallinfo info = mallinfo();
return info.arena;
}
//! Returns number of free chunks.
return_type free_chunks() const
{
struct mallinfo info = mallinfo();
return info.ordblks;
}
//! Number of bytes allocated and in use.
return_type used() const
{
struct mallinfo info = mallinfo();
return info.uordblks;
}
//! Number of bytes allocated but not in use.
return_type not_used() const
{
struct mallinfo info = mallinfo();
return info.fordblks;
}
//! Top-most, releasable (via malloc_trim) space (bytes).
return_type releasable() const
{
struct mallinfo info = mallinfo();
return info.keepcost;
}
//! Maximum total allocated space (bytes) (always 0 ?).
return_type max_allocated() const
{
struct mallinfo info = mallinfo();
return info.usmblks;
}
//! Number of fastbin blocks.
return_type fastbin_blocks() const
{
struct mallinfo info = mallinfo();
return info.smblks;
}
//! Space available in freed fastbin blocks (bytes).
return_type fastbin_free() const
{
struct mallinfo info = mallinfo();
return info.fsmblks;
}
//! Returns number of bytes allocated from system using mmap.
return_type from_system_mmap() const
{
struct mallinfo info = mallinfo();
return info.hblkhd;
}
//! Number of chunks allocated via mmap().
return_type mmap_chunks() const
{
struct mallinfo info = mallinfo();
return info.hblks;
}
//! Returns \b total number of bytes allocated from system including mmapped regions.
return_type from_system_total() const
{
return from_system_nmmap() + from_system_mmap();
}
#endif
};
//! Prints current malloc statistics in a convenient way.
inline std::ostream& operator << (std::ostream& s, const malloc_stats& st)
{
#if STXXL_HAVE_MALLINFO_PROTO
s << "MALLOC statistics" << std::endl;
s << "=================================================================" << std::endl;
s << "Space allocated from system not using mmap: " << st.from_system_nmmap() << " bytes" << std::endl;
s << " number of free chunks : " << st.free_chunks() << std::endl;
s << " space allocated and in use : " << st.used() << " bytes" << std::endl;
s << " space allocated but not in use : " << st.not_used() << " bytes" << std::endl;
s << " top-most, releasable (via malloc_trim) space: " << st.releasable() << " bytes" << std::endl;
s << " maximum total allocated space (?) : " << st.max_allocated() << " bytes" << std::endl;
s << " FASTBIN blocks " << std::endl;
s << " number of fastbin blocks: " << st.fastbin_blocks() << std::endl;
s << " space available in freed fastbin blocks: " << st.fastbin_free() << " bytes" << std::endl;
s << "Space allocated from system using mmap: " << st.from_system_mmap() << " bytes" << std::endl;
s << " number of chunks allocated via mmap(): " << st.mmap_chunks() << std::endl;
s << "Total space allocated from system (mmap and not mmap): " <<
st.from_system_total() << " bytes" << std::endl;
s << "=================================================================" << std::endl;
#else
s << "MALLOC statistics are not supported on this platform";
STXXL_UNUSED(st);
#endif
return s;
}
class malloc_setup
{ };
STXXL_END_NAMESPACE
#endif // !STXXL_UTILS_MALLOC_HEADER
|