Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1d4f195 authored by Kalesh Singh's avatar Kalesh Singh
Browse files

protoutil: EncodedBuffer: Remove usage of PAGE_SIZE 4096



bionic hard codes the PAGE_SIZE macro as 4096. This is going away as
Android begins to support larger page sizes. Remove the usage of this
assumption from protoutil source; use instead getpagesize() which
provides the real pagesize.

Test: atest -c libprotoutil_test
Bug: 295228590
Change-Id: I6c3212600256d61a71430dfbbf7b0c9944fe4859
Signed-off-by: default avatarKalesh Singh <kaleshsingh@google.com>
parent f5a3b8a8
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@

#include <stdlib.h>
#include <sys/mman.h>
#include <unistd.h>

#include <android/util/EncodedBuffer.h>
#include <android/util/protobuf.h>
@@ -25,7 +26,8 @@
namespace android {
namespace util {

const size_t BUFFER_SIZE = 8 * 1024; // 8 KB
constexpr size_t BUFFER_SIZE = 8 * 1024; // 8 KB
const size_t kPageSize = getpagesize();

EncodedBuffer::Pointer::Pointer() : Pointer(BUFFER_SIZE)
{
@@ -92,7 +94,7 @@ EncodedBuffer::EncodedBuffer(size_t chunkSize)
{
    // Align chunkSize to memory page size
    chunkSize = chunkSize == 0 ? BUFFER_SIZE : chunkSize;
    mChunkSize = (chunkSize / PAGE_SIZE + ((chunkSize % PAGE_SIZE == 0) ? 0 : 1)) * PAGE_SIZE;
    mChunkSize = (chunkSize + (kPageSize - 1)) & ~(kPageSize - 1);
    mWp = Pointer(mChunkSize);
    mEp = Pointer(mChunkSize);
}
+6 −3
Original line number Diff line number Diff line
@@ -15,13 +15,16 @@
#include <gmock/gmock.h>
#include <gtest/gtest.h>

#include <unistd.h>

using namespace android::util;
using android::sp;

constexpr size_t __TEST_CHUNK_SIZE = 16UL;
constexpr size_t TEST_CHUNK_SIZE = (__TEST_CHUNK_SIZE + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1);
constexpr size_t TEST_CHUNK_HALF_SIZE = TEST_CHUNK_SIZE / 2;
constexpr size_t TEST_CHUNK_3X_SIZE = 3 * TEST_CHUNK_SIZE;
const size_t kPageSize = getpagesize();
const size_t TEST_CHUNK_SIZE = (__TEST_CHUNK_SIZE + (kPageSize - 1)) & ~(kPageSize - 1);
const size_t TEST_CHUNK_HALF_SIZE = TEST_CHUNK_SIZE / 2;
const size_t TEST_CHUNK_3X_SIZE = 3 * TEST_CHUNK_SIZE;

static void expectPointer(EncodedBuffer::Pointer* p, size_t pos) {
    EXPECT_EQ(p->pos(), pos);