Skip to content

Commit 8bd883e

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

File tree

2 files changed

+63
-19
lines changed

2 files changed

+63
-19
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, auto extra) NOEXCEPT;
141+
139142
// Constants.
140143
const std::filesystem::path filename_;
141144
const size_t minimum_;

src/memory/map.cpp

Lines changed: 60 additions & 19 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, auto extra) NOEXCEPT
80+
{
81+
std::cerr << ticks() << sp << kind << sp << opened_ << sp << extra << std::endl;
82+
}
83+
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6884

6985
map::map(const path& filename, size_t minimum, size_t expansion,
7086
bool random) NOEXCEPT
@@ -100,11 +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
105-
std::cerr << ticks() << sp << logger::xopen << sp << filename_ << sp << opened_ << std::endl;
106-
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
107-
119+
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
120+
log(logger::xopen, filename_);
121+
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
108122
return file::size_ex(logical_, opened_);
109123
}
110124

@@ -119,10 +133,12 @@ code map::close() NOEXCEPT
119133
if (opened_ == file::invalid)
120134
return error::success;
121135

136+
// ~~~~~~~~~~~~~~~~~~
137+
log(logger::xclose);
138+
// ~~~~~~~~~~~~~~~~~~
122139
const auto descriptor = opened_;
123140
opened_ = file::invalid;
124141
logical_ = zero;
125-
126142
return file::close_ex(descriptor);
127143
}
128144

@@ -280,6 +296,9 @@ bool map::expand(size_t size) NOEXCEPT
280296
return false;
281297
}
282298

299+
// ~~~~~~~~~~~~~~~~~~
300+
////log(logger::xexpand, size - logical_);
301+
// ~~~~~~~~~~~~~~~~~~
283302
logical_ = size;
284303
return true;
285304
}
@@ -300,6 +319,9 @@ bool map::reserve(size_t chunk) NOEXCEPT
300319
return false;
301320
}
302321

322+
// ~~~~~~~~~~~~~~~~~~
323+
////log(logger::xreserve, chunk);
324+
// ~~~~~~~~~~~~~~~~~~
303325
// Same as allocate except logical does not change.
304326
return true;
305327
}
@@ -327,6 +349,9 @@ size_t map::allocate(size_t chunk) NOEXCEPT
327349
return storage::eof;
328350
}
329351

352+
// ~~~~~~~~~~~~~~~~~~
353+
////log(logger::xallocate, chunk);
354+
// ~~~~~~~~~~~~~~~~~~
330355
std::swap(logical_, end);
331356
return end;
332357
}
@@ -360,6 +385,9 @@ memory_ptr map::set(size_t offset, size_t size, uint8_t backfill) NOEXCEPT
360385
logical_ = end;
361386
}
362387

388+
// ~~~~~~~~~~~~~~~~~~
389+
////log(logger::xset, size);
390+
// ~~~~~~~~~~~~~~~~~~
363391
return get(offset);
364392
}
365393

@@ -488,6 +516,9 @@ bool map::flush_() NOEXCEPT
488516
if (!success)
489517
set_first_code(error::fsync_failure);
490518

519+
// ~~~~~~~~~~~~~~~~~~
520+
log(logger::xflush);
521+
// ~~~~~~~~~~~~~~~~~~
491522
return success;
492523
}
493524

@@ -516,6 +547,10 @@ bool map::unmap_() NOEXCEPT
516547
loaded_ = false;
517548
capacity_ = zero;
518549
memory_map_ = {};
550+
551+
// ~~~~~~~~~~~~~~~~~~
552+
log(logger::xunmap);
553+
// ~~~~~~~~~~~~~~~~~~
519554
return success;
520555
}
521556

@@ -533,6 +568,9 @@ bool map::map_() NOEXCEPT
533568
memory_map_ = pointer_cast<uint8_t>(::mmap(nullptr, size,
534569
PROT_READ | PROT_WRITE, MAP_SHARED, opened_, 0));
535570

571+
// ~~~~~~~~~~~~~~~~~~
572+
log(logger::xmap);
573+
// ~~~~~~~~~~~~~~~~~~
536574
return finalize_(size);
537575
}
538576

@@ -578,6 +616,9 @@ bool map::remap_(size_t size) NOEXCEPT
578616
PROT_READ | PROT_WRITE, MAP_SHARED, opened_, 0));
579617
#endif
580618

619+
// ~~~~~~~~~~~~~~~~~~
620+
log(logger::xremap);
621+
// ~~~~~~~~~~~~~~~~~~
581622
return finalize_(size);
582623
}
583624

0 commit comments

Comments
 (0)