diff options
| author | 2023-12-02 00:21:20 +0100 | |
|---|---|---|
| committer | 2023-12-02 00:25:50 +0100 | |
| commit | 01d3e250ab41622742ccb5bf93819ae364a65310 (patch) | |
| tree | 1d43da86096a9d5f429ef1869c0ff7cfa02a8d46 /src/common/host_memory.cpp | |
| parent | host_memory: allow missing MAP_NORESERVE on FreeBSD after 448d4815dece (diff) | |
| download | yuzu-01d3e250ab41622742ccb5bf93819ae364a65310.tar.gz yuzu-01d3e250ab41622742ccb5bf93819ae364a65310.tar.xz yuzu-01d3e250ab41622742ccb5bf93819ae364a65310.zip | |
host_memory: move MAP_ALIGNED_SUPER attempt after 448d4815dece
src/common/host_memory.cpp:410:14: error: unused function 'ChooseVirtualBase' [-Werror,-Wunused-function]
410 | static void* ChooseVirtualBase(size_t virtual_size) {
| ^~~~~~~~~~~~~~~~~
Diffstat (limited to '')
| -rw-r--r-- | src/common/host_memory.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/common/host_memory.cpp b/src/common/host_memory.cpp index 179f6ab11..4bfc64f2d 100644 --- a/src/common/host_memory.cpp +++ b/src/common/host_memory.cpp | |||
| @@ -408,6 +408,16 @@ static void* ChooseVirtualBase(size_t virtual_size) { | |||
| 408 | #else | 408 | #else |
| 409 | 409 | ||
| 410 | static void* ChooseVirtualBase(size_t virtual_size) { | 410 | static void* ChooseVirtualBase(size_t virtual_size) { |
| 411 | #if defined(__FreeBSD__) | ||
| 412 | void* virtual_base = | ||
| 413 | mmap(nullptr, virtual_size, PROT_READ | PROT_WRITE, | ||
| 414 | MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE | MAP_ALIGNED_SUPER, -1, 0); | ||
| 415 | |||
| 416 | if (virtual_base != MAP_FAILED) { | ||
| 417 | return virtual_base; | ||
| 418 | } | ||
| 419 | #endif | ||
| 420 | |||
| 411 | return mmap(nullptr, virtual_size, PROT_READ | PROT_WRITE, | 421 | return mmap(nullptr, virtual_size, PROT_READ | PROT_WRITE, |
| 412 | MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0); | 422 | MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0); |
| 413 | } | 423 | } |
| @@ -463,24 +473,12 @@ public: | |||
| 463 | } | 473 | } |
| 464 | 474 | ||
| 465 | // Virtual memory initialization | 475 | // Virtual memory initialization |
| 466 | #if defined(__FreeBSD__) | ||
| 467 | virtual_base = | ||
| 468 | static_cast<u8*>(mmap(nullptr, virtual_size, PROT_NONE, | ||
| 469 | MAP_PRIVATE | MAP_ANONYMOUS | MAP_ALIGNED_SUPER, -1, 0)); | ||
| 470 | if (virtual_base == MAP_FAILED) { | ||
| 471 | virtual_base = static_cast<u8*>( | ||
| 472 | mmap(nullptr, virtual_size, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)); | ||
| 473 | if (virtual_base == MAP_FAILED) { | ||
| 474 | LOG_CRITICAL(HW_Memory, "mmap failed: {}", strerror(errno)); | ||
| 475 | throw std::bad_alloc{}; | ||
| 476 | } | ||
| 477 | } | ||
| 478 | #else | ||
| 479 | virtual_base = virtual_map_base = static_cast<u8*>(ChooseVirtualBase(virtual_size)); | 476 | virtual_base = virtual_map_base = static_cast<u8*>(ChooseVirtualBase(virtual_size)); |
| 480 | if (virtual_base == MAP_FAILED) { | 477 | if (virtual_base == MAP_FAILED) { |
| 481 | LOG_CRITICAL(HW_Memory, "mmap failed: {}", strerror(errno)); | 478 | LOG_CRITICAL(HW_Memory, "mmap failed: {}", strerror(errno)); |
| 482 | throw std::bad_alloc{}; | 479 | throw std::bad_alloc{}; |
| 483 | } | 480 | } |
| 481 | #if defined(__linux__) | ||
| 484 | madvise(virtual_base, virtual_size, MADV_HUGEPAGE); | 482 | madvise(virtual_base, virtual_size, MADV_HUGEPAGE); |
| 485 | #endif | 483 | #endif |
| 486 | 484 | ||