mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-17 21:32:04 +00:00
Use the /dev/zero device as the device on which the pages are mapped.
Patch contributed by Henrik Bach. Thanks Henrik! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16397 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d0c9e0ee0d
commit
111a348435
@ -15,6 +15,7 @@
|
||||
// Include the generic unix implementation
|
||||
#include "../Unix/Memory.cpp"
|
||||
#include "llvm/System/Process.h"
|
||||
#include <fcntl.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
namespace llvm {
|
||||
@ -30,9 +31,14 @@ MemoryBlock Memory::AllocateRWX(unsigned NumBytes) {
|
||||
|
||||
static const long pageSize = Process::GetPageSize();
|
||||
unsigned NumPages = (NumBytes+pageSize-1)/pageSize;
|
||||
|
||||
int fd = open("/dev/zero", O_RDWR);
|
||||
if (fd == -1) {
|
||||
throw std::string("Can't open /dev/zero device: ") + strerror(errno);
|
||||
}
|
||||
|
||||
void *pa = mmap(0, pageSize*NumPages, PROT_READ|PROT_WRITE|PROT_EXEC,
|
||||
MAP_PRIVATE|MAP_ANON|MAP_NOCORE, -1, 0);
|
||||
MAP_SHARED, fd, 0);
|
||||
if (pa == (void*)-1) {
|
||||
throw std::string("Can't allocate RWX Memory: ") + strerror(errno);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user