libbinder: add a NO_CACHING flag to MemoryHeapBase
The NO_CACHING flag translates to opening a memory region with O_SYNC. Signed-off-by: Iliyan Malchev <malchev@google.com>
This commit is contained in:
parent
db95a9e824
commit
0db1a8931b
@ -35,7 +35,8 @@ public:
|
|||||||
MAP_ONCE = IMemoryHeap::MAP_ONCE,
|
MAP_ONCE = IMemoryHeap::MAP_ONCE,
|
||||||
// memory won't be mapped locally, but will be mapped in the remote
|
// memory won't be mapped locally, but will be mapped in the remote
|
||||||
// process.
|
// process.
|
||||||
DONT_MAP_LOCALLY = 0x00000100
|
DONT_MAP_LOCALLY = 0x00000100,
|
||||||
|
NO_CACHING = 0x00000200
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -67,7 +67,11 @@ MemoryHeapBase::MemoryHeapBase(const char* device, size_t size, uint32_t flags)
|
|||||||
: mFD(-1), mSize(0), mBase(MAP_FAILED), mFlags(flags),
|
: mFD(-1), mSize(0), mBase(MAP_FAILED), mFlags(flags),
|
||||||
mDevice(0), mNeedUnmap(false)
|
mDevice(0), mNeedUnmap(false)
|
||||||
{
|
{
|
||||||
int fd = open(device, O_RDWR);
|
int open_flags = O_RDWR;
|
||||||
|
if (flags & NO_CACHING)
|
||||||
|
open_flags |= O_SYNC;
|
||||||
|
|
||||||
|
int fd = open(device, open_flags);
|
||||||
LOGE_IF(fd<0, "error opening %s: %s", device, strerror(errno));
|
LOGE_IF(fd<0, "error opening %s: %s", device, strerror(errno));
|
||||||
if (fd >= 0) {
|
if (fd >= 0) {
|
||||||
const size_t pagesize = getpagesize();
|
const size_t pagesize = getpagesize();
|
||||||
|
Loading…
Reference in New Issue
Block a user