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

Commit 86dce413 authored by Yi Jin's avatar Yi Jin
Browse files

Optimize incidentd memory usage

1. Remove dependency of libprotobuf-cpp-lite, saves .so mmap ~200KB
2. Don't use auto except iterator for readability.

Bug: 74254200
Test: adb shell dumpsys meminfo `pid incidentd`
Change-Id: If6198521c3b80929d6ea3f7ed466b5195991ccfd
parent 09ed26a0
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -41,20 +41,16 @@ else
    LOCAL_CFLAGS += \
            -Os
endif

LOCAL_C_INCLUDES += $(LOCAL_PATH)/src

LOCAL_SHARED_LIBRARIES := \
        libbase \
        libbinder \
        libcutils \
        libdebuggerd_client \
        libdumputils \
        libincident \
        liblog \
        libprotobuf-cpp-lite \
        libprotoutil \
        libselinux \
        libservices \
        libutils

@@ -122,14 +118,12 @@ LOCAL_STATIC_LIBRARIES := \
LOCAL_SHARED_LIBRARIES := \
    libbase \
    libbinder \
    libcutils \
    libdebuggerd_client \
    libdumputils \
    libincident \
    liblog \
    libprotobuf-cpp-lite \
    libprotoutil \
    libselinux \
    libservices \
    libutils \

+1 −2
Original line number Diff line number Diff line
@@ -358,8 +358,7 @@ status_t IncidentService::cmd_privacy(FILE* in, FILE* out, FILE* err, Vector<Str
                return error;
            }
            fprintf(err, "Read %zu bytes\n", buf.size());
            auto data = buf.data();
            PrivacyBuffer pBuf(p, data);
            PrivacyBuffer pBuf(p, buf.data());

            PrivacySpec spec = PrivacySpec::new_spec(argCount > 3 ? atoi(args[3]) : -1);
            error = pBuf.strip(spec);
+1 −1
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ status_t PrivacyBuffer::stripField(const Privacy* parentPolicy, const PrivacySpe
}

// ================================================================================
PrivacyBuffer::PrivacyBuffer(const Privacy* policy, EncodedBuffer::iterator& data)
PrivacyBuffer::PrivacyBuffer(const Privacy* policy, EncodedBuffer::iterator data)
    : mPolicy(policy), mData(data), mProto(), mSize(0) {}

PrivacyBuffer::~PrivacyBuffer() {}
+2 −2
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ using namespace android::util;
 */
class PrivacyBuffer {
public:
    PrivacyBuffer(const Privacy* policy, EncodedBuffer::iterator& data);
    PrivacyBuffer(const Privacy* policy, EncodedBuffer::iterator data);
    ~PrivacyBuffer();

    /**
@@ -60,7 +60,7 @@ public:

private:
    const Privacy* mPolicy;
    EncodedBuffer::iterator& mData;
    EncodedBuffer::iterator mData;

    ProtoOutputStream mProto;
    size_t mSize;
+4 −4
Original line number Diff line number Diff line
@@ -89,11 +89,11 @@ bool ReportRequestSet::containsSection(int id) { return mSections.containsSectio

IncidentMetadata::SectionStats* ReportRequestSet::sectionStats(int id) {
    if (mSectionStats.find(id) == mSectionStats.end()) {
        auto stats = mMetadata.add_sections();
        stats->set_id(id);
        IncidentMetadata::SectionStats stats;
        stats.set_id(id);
        mSectionStats[id] = stats;
    }
    return mSectionStats[id];
    return &mSectionStats[id];
}

// ================================================================================
@@ -182,7 +182,7 @@ Reporter::run_report_status_t Reporter::runReport(size_t* reportByteSize) {
            }

            // Execute - go get the data and write it into the file descriptors.
            auto stats = batch.sectionStats(id);
            IncidentMetadata::SectionStats* stats = batch.sectionStats(id);
            int64_t startTime = uptimeMillis();
            err = (*section)->Execute(&batch);
            int64_t endTime = uptimeMillis();
Loading