Skip to content

Commit f54e015

Browse files
committed
Add std::err mmap logging messages (temp).
1 parent e2e01f4 commit f54e015

File tree

2 files changed

+62
-17
lines changed

2 files changed

+62
-17
lines changed

include/bitcoin/database/memory/map.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,9 @@ class BCD_API map
136136
bool resize_(size_t size) NOEXCEPT;
137137
bool finalize_(size_t size) NOEXCEPT;
138138

139+
void log(auto kind) NOEXCEPT;
140+
void log(auto kind, size_t size) NOEXCEPT;
141+
139142
// Constants.
140143
const std::filesystem::path filename_;
141144
const size_t minimum_;

src/memory/map.cpp

Lines changed: 59 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,34 +37,50 @@
3737
#include <bitcoin/database/error.hpp>
3838
#include <bitcoin/database/file/file.hpp>
3939

40+
namespace libbitcoin {
41+
namespace database {
42+
43+
BC_PUSH_WARNING(NO_THROW_IN_NOEXCEPT)
44+
45+
using namespace system;
46+
4047
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41-
#include <chrono>
42-
#include <iostream>
48+
constexpr auto sp = " ";
4349

4450
enum logger
4551
{
46-
xopen = 0
52+
xopen,
53+
xmap,
54+
xexpand,
55+
xreserve,
56+
xallocate,
57+
xset,
58+
xremap,
59+
xflush,
60+
xunmap,
61+
xclose
4762
};
4863

49-
constexpr auto sp = " ";
50-
5164
size_t ticks() NOEXCEPT
5265
{
5366
using clock = std::chrono::high_resolution_clock;
5467
static const auto start = clock::now();
5568

5669
using namespace std::chrono;
57-
const auto span = duration_cast<milliseconds>(clock::now() - start);
58-
return bc::system::to_unsigned(span.count());
70+
const auto span = duration_cast<microseconds>(clock::now() - start);
71+
return to_unsigned(span.count());
5972
}
60-
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6173

62-
namespace libbitcoin {
63-
namespace database {
64-
65-
BC_PUSH_WARNING(NO_THROW_IN_NOEXCEPT)
74+
void map::log(auto kind) NOEXCEPT
75+
{
76+
std::cerr << ticks() << sp << kind << sp << opened_ << std::endl;
77+
}
6678

67-
using namespace system;
79+
void map::log(auto kind, size_t size) NOEXCEPT
80+
{
81+
std::cerr << ticks() << sp << kind << sp << opened_ << sp << size << std::endl;
82+
}
83+
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6884

6985
map::map(const path& filename, size_t minimum, size_t expansion,
7086
bool random) NOEXCEPT
@@ -100,10 +116,9 @@ code map::open() NOEXCEPT
100116
if (const auto ec = file::open_ex(opened_, filename_, random_))
101117
return ec;
102118

103-
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
104-
// 42 0 confirmed.data 19303540
119+
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
105120
std::cerr << ticks() << sp << logger::xopen << sp << filename_ << sp << opened_ << std::endl;
106-
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
121+
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
107122

108123
return file::size_ex(logical_, opened_);
109124
}
@@ -119,10 +134,12 @@ code map::close() NOEXCEPT
119134
if (opened_ == file::invalid)
120135
return error::success;
121136

137+
// ~~~~~~~~~~~~~~~~~~
138+
log(logger::xclose);
139+
// ~~~~~~~~~~~~~~~~~~
122140
const auto descriptor = opened_;
123141
opened_ = file::invalid;
124142
logical_ = zero;
125-
126143
return file::close_ex(descriptor);
127144
}
128145

@@ -280,6 +297,9 @@ bool map::expand(size_t size) NOEXCEPT
280297
return false;
281298
}
282299

300+
// ~~~~~~~~~~~~~~~~~~
301+
log(logger::xexpand, size - logical_);
302+
// ~~~~~~~~~~~~~~~~~~
283303
logical_ = size;
284304
return true;
285305
}
@@ -300,6 +320,9 @@ bool map::reserve(size_t chunk) NOEXCEPT
300320
return false;
301321
}
302322

323+
// ~~~~~~~~~~~~~~~~~~
324+
log(logger::xreserve, chunk);
325+
// ~~~~~~~~~~~~~~~~~~
303326
// Same as allocate except logical does not change.
304327
return true;
305328
}
@@ -327,6 +350,9 @@ size_t map::allocate(size_t chunk) NOEXCEPT
327350
return storage::eof;
328351
}
329352

353+
// ~~~~~~~~~~~~~~~~~~
354+
log(logger::xallocate, chunk);
355+
// ~~~~~~~~~~~~~~~~~~
330356
std::swap(logical_, end);
331357
return end;
332358
}
@@ -360,6 +386,9 @@ memory_ptr map::set(size_t offset, size_t size, uint8_t backfill) NOEXCEPT
360386
logical_ = end;
361387
}
362388

389+
// ~~~~~~~~~~~~~~~~~~
390+
log(logger::xset, size);
391+
// ~~~~~~~~~~~~~~~~~~
363392
return get(offset);
364393
}
365394

@@ -488,6 +517,9 @@ bool map::flush_() NOEXCEPT
488517
if (!success)
489518
set_first_code(error::fsync_failure);
490519

520+
// ~~~~~~~~~~~~~~~~~~
521+
log(logger::xflush);
522+
// ~~~~~~~~~~~~~~~~~~
491523
return success;
492524
}
493525

@@ -516,6 +548,10 @@ bool map::unmap_() NOEXCEPT
516548
loaded_ = false;
517549
capacity_ = zero;
518550
memory_map_ = {};
551+
552+
// ~~~~~~~~~~~~~~~~~~
553+
log(logger::xunmap);
554+
// ~~~~~~~~~~~~~~~~~~
519555
return success;
520556
}
521557

@@ -533,6 +569,9 @@ bool map::map_() NOEXCEPT
533569
memory_map_ = pointer_cast<uint8_t>(::mmap(nullptr, size,
534570
PROT_READ | PROT_WRITE, MAP_SHARED, opened_, 0));
535571

572+
// ~~~~~~~~~~~~~~~~~~
573+
log(logger::xmap);
574+
// ~~~~~~~~~~~~~~~~~~
536575
return finalize_(size);
537576
}
538577

@@ -578,6 +617,9 @@ bool map::remap_(size_t size) NOEXCEPT
578617
PROT_READ | PROT_WRITE, MAP_SHARED, opened_, 0));
579618
#endif
580619

620+
// ~~~~~~~~~~~~~~~~~~
621+
log(logger::xremap);
622+
// ~~~~~~~~~~~~~~~~~~
581623
return finalize_(size);
582624
}
583625

0 commit comments

Comments
 (0)