| 22 | |
| 23 | namespace { |
| 24 | void Madvise(int flag, const void* cbegin, size_t size) { |
| 25 | static const size_t pageSize = NSystemInfo::GetPageSize(); |
| 26 | void* begin = AlignDown(const_cast<void*>(cbegin), pageSize); |
| 27 | size = AlignUp(size, pageSize); |
| 28 | |
| 29 | #if defined(_win_) |
| 30 | if (!VirtualFree((LPVOID)begin, size, flag)) { |
| 31 | TString err(LastSystemErrorText()); |
| 32 | ythrow yexception() << "VirtualFree(" << begin << ", " << size << ", " << flag << ")" |
| 33 | << " returned error: " << err; |
| 34 | } |
| 35 | #else |
| 36 | if (-1 == madvise(begin, size, flag)) { |
| 37 | TString err(LastSystemErrorText()); |
| 38 | ythrow yexception() << "madvise(" << begin << ", " << size << ", " << flag << ")" |
| 39 | << " returned error: " << err; |
| 40 | } |
| 41 | #endif |
| 42 | } |
| 43 | } // namespace |
| 44 | |
| 45 | void MadviseSequentialAccess(const void* begin, size_t size) { |
no test coverage detected