From 4df7c27b0148126aefb48b7efb66942b8914ff40 Mon Sep 17 00:00:00 2001 From: cwx1272435 Date: Wed, 21 Feb 2024 07:08:13 +0000 Subject: [PATCH] 0221 Signed-off-by: cwx1272435 --- .../c/src/purgeable_mem_builder_c.c | 10 +++--- libpurgeablemem/c/src/purgeable_mem_c.c | 36 +++++++++++-------- libpurgeablemem/test/purgeableashmem_test.cpp | 4 +-- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/libpurgeablemem/c/src/purgeable_mem_builder_c.c b/libpurgeablemem/c/src/purgeable_mem_builder_c.c index 20023ad..73f479c 100644 --- a/libpurgeablemem/c/src/purgeable_mem_builder_c.c +++ b/libpurgeablemem/c/src/purgeable_mem_builder_c.c @@ -34,7 +34,7 @@ struct PurgMemBuilder { }; /* append a guest builder @newcomer to @head */ -static void AppendBuilder_(struct PurgMemBuilder *head, struct PurgMemBuilder *newcomer); +static void AppendBuilder(struct PurgMemBuilder *head, struct PurgMemBuilder *newcomer); struct PurgMemBuilder *PurgMemBuilderCreate(PurgMemBuilderFunc func, void *param, const char *name) { @@ -78,7 +78,7 @@ bool PurgMemBuilderAppendFunc(struct PurgMemBuilder *builder, PurgMemBuilderFunc struct PurgMemBuilder *newcomer = PurgMemBuilderCreate(func, param, name); IF_NULL_LOG_ACTION(newcomer, "create new builder failed", return false); - AppendBuilder_(builder, newcomer); + AppendBuilder(builder, newcomer); return true; } @@ -104,16 +104,16 @@ bool PurgMemBuilderAppendBuilder(struct PurgMemBuilder *builder, struct PurgMemB IF_NULL_LOG_ACTION(builder, "input builder is NULL", return false); IF_NULL_LOG_ACTION(newcomer, "input newcomer is NULL", return false); - AppendBuilder_(builder, newcomer); + AppendBuilder(builder, newcomer); return true; } /* append a guest builder @newcomer to @head */ -static void AppendBuilder_(struct PurgMemBuilder *head, struct PurgMemBuilder *newcomer) +static void AppendBuilder(struct PurgMemBuilder *head, struct PurgMemBuilder *newcomer) { if (!head->nextBuilder) { head->nextBuilder = newcomer; return; } - return AppendBuilder_(head->nextBuilder, newcomer); + return AppendBuilder(head->nextBuilder, newcomer); } diff --git a/libpurgeablemem/c/src/purgeable_mem_c.c b/libpurgeablemem/c/src/purgeable_mem_c.c index 8671c73..d1c365f 100644 --- a/libpurgeablemem/c/src/purgeable_mem_c.c +++ b/libpurgeablemem/c/src/purgeable_mem_c.c @@ -39,7 +39,7 @@ struct PurgMem { unsigned int buildDataCount; }; -static inline void LogPurgMemInfo_(struct PurgMem *obj) +static inline void LogPurgMemInfo(struct PurgMem *obj) { PM_HILOG_INFO_C(LOG_CORE, "purgMemObj(%{public}lx) dataPtr(%{public}lx) dataSizeInput(%{public}zu)" " builderPtr(%{public}lx) uxpt(%{public}lx)", @@ -57,6 +57,7 @@ static inline size_t RoundUp(size_t val, size_t align) static bool IsPurgMemPtrValid_(struct PurgMem *purgObj); static bool IsPurged(struct PurgMem *purgObj); +static int GetMapType(void); static struct PurgMem *PurgMemCreate_(size_t len, struct PurgMemBuilder *builder) { @@ -68,8 +69,7 @@ static struct PurgMem *PurgMemCreate_(size_t len, struct PurgMemBuilder *builder return NULL; } size_t size = RoundUp(len, PAGE_SIZE); - int type = MAP_ANONYMOUS; - type |= (UxpteIsEnabled() ? MAP_PURGEABLE : MAP_PRIVATE); + int type = GetMapType(); pugObj->dataPtr = mmap(NULL, size, PROT_READ | PROT_WRITE, type, -1, 0); if (pugObj->dataPtr == MAP_FAILED) { PM_HILOG_ERROR_C(LOG_CORE, "%{public}s: mmap dataPtr fail", __func__); @@ -97,8 +97,8 @@ static struct PurgMem *PurgMemCreate_(size_t len, struct PurgMemBuilder *builder pugObj->dataSizeInput = len; pugObj->buildDataCount = 0; - PM_HILOG_INFO_C(LOG_CORE, "%{public}s: LogPurgMemInfo_:", __func__); - LogPurgMemInfo_(pugObj); + PM_HILOG_INFO_C(LOG_CORE, "%{public}s: LogPurgMemInfo:", __func__); + LogPurgMemInfo(pugObj); return pugObj; deinit_upt: @@ -145,8 +145,8 @@ struct PurgMem *PurgMemCreate(size_t len, PurgMemModifyFunc func, void *funcPara bool PurgMemDestroy(struct PurgMem *purgObj) { IF_NULL_LOG_ACTION(purgObj, "input is NULL", return true); - PM_HILOG_INFO_C(LOG_CORE, "%{public}s: LogPurgMemInfo_:", __func__); - LogPurgMemInfo_(purgObj); + PM_HILOG_INFO_C(LOG_CORE, "%{public}s: LogPurgMemInfo:", __func__); + LogPurgMemInfo(purgObj); PMState err = PM_OK; /* destroy rwlock */ @@ -284,8 +284,8 @@ bool PurgMemBeginRead(struct PurgMem *purgObj) PM_HILOG_ERROR_C(LOG_CORE, "%{public}s: para is invalid", __func__); return false; } - PM_HILOG_INFO_C(LOG_CORE, "%{public}s: LogPurgMemInfo_:", __func__); - LogPurgMemInfo_(purgObj); + PM_HILOG_INFO_C(LOG_CORE, "%{public}s: LogPurgMemInfo:", __func__); + LogPurgMemInfo(purgObj); bool ret = false; PMState err = PM_OK; UxpteGet(purgObj->uxPageTable, (uint64_t)(purgObj->dataPtr), purgObj->dataSizeInput); @@ -318,8 +318,8 @@ bool PurgMemBeginWrite(struct PurgMem *purgObj) PM_HILOG_ERROR_C(LOG_CORE, "%{public}s: para is invalid", __func__); return false; } - PM_HILOG_INFO_C(LOG_CORE, "%{public}s: LogPurgMemInfo_:", __func__); - LogPurgMemInfo_(purgObj); + PM_HILOG_INFO_C(LOG_CORE, "%{public}s: LogPurgMemInfo:", __func__); + LogPurgMemInfo(purgObj); int rwlockRet = 0; bool rebuildRet = false; PMState err = PM_OK; @@ -357,7 +357,7 @@ bool PurgMemBeginWrite(struct PurgMem *purgObj) return false; } -static inline void EndAccessPurgMem_(struct PurgMem *purgObj) +static inline void EndAccessPurgMem(struct PurgMem *purgObj) { if (!IsPurgMemPtrValid_(purgObj)) { PM_HILOG_ERROR_C(LOG_CORE, "%{public}s: para is invalid", __func__); @@ -373,12 +373,12 @@ static inline void EndAccessPurgMem_(struct PurgMem *purgObj) void PurgMemEndRead(struct PurgMem *purgObj) { - EndAccessPurgMem_(purgObj); + EndAccessPurgMem(purgObj); } void PurgMemEndWrite(struct PurgMem *purgObj) { - EndAccessPurgMem_(purgObj); + EndAccessPurgMem(purgObj); } void *PurgMemGetContent(struct PurgMem *purgObj) @@ -427,3 +427,11 @@ static bool IsPurged(struct PurgMem *purgObj) } return !UxpteIsPresent(purgObj->uxPageTable, (uint64_t)(purgObj->dataPtr), purgObj->dataSizeInput); } + +static int GetMapType(void) +{ + unsigned int utype = MAP_ANONYMOUS; + utype |= (UxpteIsEnabled() ? MAP_PURGEABLE : MAP_PRIVATE); + int type = (int) utype; + return type; +} \ No newline at end of file diff --git a/libpurgeablemem/test/purgeableashmem_test.cpp b/libpurgeablemem/test/purgeableashmem_test.cpp index 25b017e..2b057bd 100644 --- a/libpurgeablemem/test/purgeableashmem_test.cpp +++ b/libpurgeablemem/test/purgeableashmem_test.cpp @@ -446,7 +446,7 @@ HWTEST_F(PurgeableAshmemTest, MutiPageReadWriteTest, TestSize.Level1) HWTEST_F(PurgeableAshmemTest, MutiMorePageReadWriteTest, TestSize.Level1) { size_t size = 5 * 1024 * 1024; - char *alphabet = (char *)malloc(size); + char *alphabet = static_cast(malloc(size)); size_t len = 0; for (char ch = 'D'; len < size;) { alphabet[len++] = ch; @@ -487,7 +487,7 @@ HWTEST_F(PurgeableAshmemTest, MutiMorePageReadWriteTest, TestSize.Level1) HWTEST_F(PurgeableAshmemTest, StableMutiMorePageReadWriteTest, TestSize.Level1) { size_t size = 5 * 1024 * 1024; - char *alphabet = (char *)malloc(size); + char *alphabet = static_cast(malloc(size)); size_t len = 0; for (char ch = 'D'; len < size;) { alphabet[len++] = ch; -- Gitee