summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/MemArena.cpp
diff options
context:
space:
mode:
authorbushing <bushing@gmail.com>2008-12-08 05:30:24 +0000
committerbushing <bushing@gmail.com>2008-12-08 05:30:24 +0000
commit49cfded60bb5b444d1828190eacc52bbb49a9cb8 (patch)
tree0823218c1f2f6eec307dadbdec18c5632625f052 /Source/Core/Common/Src/MemArena.cpp
parent901fe7c00fec5e2aaf55d184edbcb6d092345d52 (diff)
set svn:eol-style=native for **.cpp
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1442 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/Common/Src/MemArena.cpp')
-rw-r--r--Source/Core/Common/Src/MemArena.cpp288
1 files changed, 144 insertions, 144 deletions
diff --git a/Source/Core/Common/Src/MemArena.cpp b/Source/Core/Common/Src/MemArena.cpp
index 6232d156c3..531660ceda 100644
--- a/Source/Core/Common/Src/MemArena.cpp
+++ b/Source/Core/Common/Src/MemArena.cpp
@@ -1,144 +1,144 @@
-// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#include "Common.h"
-#include "MemArena.h"
-
-#ifdef _WIN32
-#include <windows.h>
-#else
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <cerrno>
-#include <cstring>
-#endif
-
-#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
-#define MAP_ANONYMOUS MAP_ANON
-#endif
-
-
-const char* ram_temp_file = "/tmp/gc_mem.tmp";
-
-void MemArena::GrabLowMemSpace(size_t size)
-{
-#ifdef _WIN32
- hMemoryMapping = CreateFileMapping(NULL, NULL, PAGE_READWRITE, 0, (DWORD)(size), _T("All GC Memory"));
-#else
- mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
- fd = open(ram_temp_file, O_RDWR | O_CREAT, mode);
- ftruncate(fd, size);
- return;
-#endif
-}
-
-
-void MemArena::ReleaseSpace()
-{
-#ifdef _WIN32
- CloseHandle(hMemoryMapping);
- hMemoryMapping = 0;
-#else
- close(fd);
- unlink(ram_temp_file);
-#endif
-}
-
-
-void* MemArena::CreateView(s64 offset, size_t size, bool ensure_low_mem)
-{
-#ifdef _WIN32
- return(MapViewOfFile(hMemoryMapping, FILE_MAP_ALL_ACCESS, 0, (DWORD)((u64)offset), size));
-
-#else
- void* ptr = mmap(0, size,
- PROT_READ | PROT_WRITE,
- MAP_SHARED
-#ifdef __x86_64__
- | (ensure_low_mem ? MAP_32BIT : 0)
-#endif
- , fd, offset);
-
- if (!ptr)
- {
- PanicAlert("Failed to create view");
- }
-
- return(ptr);
-#endif
-
-}
-
-
-void* MemArena::CreateViewAt(s64 offset, size_t size, void* base)
-{
-#ifdef _WIN32
- return(MapViewOfFileEx(hMemoryMapping, FILE_MAP_ALL_ACCESS, 0, (DWORD)((u64)offset), size, base));
-
-#else
- return(mmap(base, size, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, fd, offset));
-#endif
-
-}
-
-
-void MemArena::ReleaseView(void* view, size_t size)
-{
-#ifdef _WIN32
- UnmapViewOfFile(view);
-#else
- munmap(view, size);
-#endif
-}
-
-
-u8* MemArena::Find4GBBase()
-{
-#ifdef _M_X64
-#ifdef _WIN32
- // 64 bit
- u8* base = (u8*)VirtualAlloc(0, 0xE1000000, MEM_RESERVE, PAGE_READWRITE);
- VirtualFree(base, 0, MEM_RELEASE);
- return base;
-#else
- // Very precarious - mmap cannot return an error when trying to map already used pages.
- // This makes the Windows approach above unusable on Linux, so we will simply pray...
- return reinterpret_cast<u8*>(0x2300000000ULL);
-#endif
-
-#else
- // 32 bit
-#ifdef _WIN32
- // The highest thing in any 1GB section of memory space is the locked cache. We only need to fit it.
- u8* base = (u8*)VirtualAlloc(0, 0x31000000, MEM_RESERVE, PAGE_READWRITE);
- if (base) {
- VirtualFree(base, 0, MEM_RELEASE);
- }
- return base;
-#else
- void* base = mmap(0, 0x31000000, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, 0, 0);
- if (base == MAP_FAILED) {
- PanicAlert("Failed to map 1 GB of memory space: %s", strerror(errno));
- return 0;
- }
- munmap(base, 0x31000000);
- return static_cast<u8*>(base);
-#endif
-#endif
-}
+// Copyright (C) 2003-2008 Dolphin Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official SVN repository and contact information can be found at
+// http://code.google.com/p/dolphin-emu/
+
+#include "Common.h"
+#include "MemArena.h"
+
+#ifdef _WIN32
+#include <windows.h>
+#else
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <cerrno>
+#include <cstring>
+#endif
+
+#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
+
+const char* ram_temp_file = "/tmp/gc_mem.tmp";
+
+void MemArena::GrabLowMemSpace(size_t size)
+{
+#ifdef _WIN32
+ hMemoryMapping = CreateFileMapping(NULL, NULL, PAGE_READWRITE, 0, (DWORD)(size), _T("All GC Memory"));
+#else
+ mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
+ fd = open(ram_temp_file, O_RDWR | O_CREAT, mode);
+ ftruncate(fd, size);
+ return;
+#endif
+}
+
+
+void MemArena::ReleaseSpace()
+{
+#ifdef _WIN32
+ CloseHandle(hMemoryMapping);
+ hMemoryMapping = 0;
+#else
+ close(fd);
+ unlink(ram_temp_file);
+#endif
+}
+
+
+void* MemArena::CreateView(s64 offset, size_t size, bool ensure_low_mem)
+{
+#ifdef _WIN32
+ return(MapViewOfFile(hMemoryMapping, FILE_MAP_ALL_ACCESS, 0, (DWORD)((u64)offset), size));
+
+#else
+ void* ptr = mmap(0, size,
+ PROT_READ | PROT_WRITE,
+ MAP_SHARED
+#ifdef __x86_64__
+ | (ensure_low_mem ? MAP_32BIT : 0)
+#endif
+ , fd, offset);
+
+ if (!ptr)
+ {
+ PanicAlert("Failed to create view");
+ }
+
+ return(ptr);
+#endif
+
+}
+
+
+void* MemArena::CreateViewAt(s64 offset, size_t size, void* base)
+{
+#ifdef _WIN32
+ return(MapViewOfFileEx(hMemoryMapping, FILE_MAP_ALL_ACCESS, 0, (DWORD)((u64)offset), size, base));
+
+#else
+ return(mmap(base, size, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, fd, offset));
+#endif
+
+}
+
+
+void MemArena::ReleaseView(void* view, size_t size)
+{
+#ifdef _WIN32
+ UnmapViewOfFile(view);
+#else
+ munmap(view, size);
+#endif
+}
+
+
+u8* MemArena::Find4GBBase()
+{
+#ifdef _M_X64
+#ifdef _WIN32
+ // 64 bit
+ u8* base = (u8*)VirtualAlloc(0, 0xE1000000, MEM_RESERVE, PAGE_READWRITE);
+ VirtualFree(base, 0, MEM_RELEASE);
+ return base;
+#else
+ // Very precarious - mmap cannot return an error when trying to map already used pages.
+ // This makes the Windows approach above unusable on Linux, so we will simply pray...
+ return reinterpret_cast<u8*>(0x2300000000ULL);
+#endif
+
+#else
+ // 32 bit
+#ifdef _WIN32
+ // The highest thing in any 1GB section of memory space is the locked cache. We only need to fit it.
+ u8* base = (u8*)VirtualAlloc(0, 0x31000000, MEM_RESERVE, PAGE_READWRITE);
+ if (base) {
+ VirtualFree(base, 0, MEM_RELEASE);
+ }
+ return base;
+#else
+ void* base = mmap(0, 0x31000000, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, 0, 0);
+ if (base == MAP_FAILED) {
+ PanicAlert("Failed to map 1 GB of memory space: %s", strerror(errno));
+ return 0;
+ }
+ munmap(base, 0x31000000);
+ return static_cast<u8*>(base);
+#endif
+#endif
+}