From 2d6319ea111247507fe20465018a0fea8e5c1ab6 Mon Sep 17 00:00:00 2001 From: caiyiming Date: Wed, 22 Nov 2023 09:00:59 +0000 Subject: [PATCH] 1122 Signed-off-by: caiyiming --- libpurgeablemem/c/src/purgeable_mem_c.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libpurgeablemem/c/src/purgeable_mem_c.c b/libpurgeablemem/c/src/purgeable_mem_c.c index e1a08fe..3a333aa 100644 --- a/libpurgeablemem/c/src/purgeable_mem_c.c +++ b/libpurgeablemem/c/src/purgeable_mem_c.c @@ -61,6 +61,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 TypeCast(void); static struct PurgMem *PurgMemCreate_(size_t len, struct PurgMemBuilder *builder) { @@ -72,9 +73,7 @@ static struct PurgMem *PurgMemCreate_(size_t len, struct PurgMemBuilder *builder return NULL; } size_t size = RoundUp(len, PAGE_SIZE); - unsigned int utype = MAP_ANONYMOUS; - utype |= (UxpteIsEnabled() ? MAP_PURGEABLE : MAP_PRIVATE); - int type = (int) utype; + int type = TypeCast(); 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__); @@ -432,3 +431,11 @@ static bool IsPurged(struct PurgMem *purgObj) } return !UxpteIsPresent(purgObj->uxPageTable, (uint64_t)(purgObj->dataPtr), purgObj->dataSizeInput); } + +static int TypeCast(void) +{ + unsigned int utype = MAP_ANONYMOUS; + utype |= (UxpteIsEnabled() ? MAP_PURGEABLE : MAP_PRIVATE); + int type = (int) utype; + return type; +} \ No newline at end of file -- Gitee