diff --git a/libpurgeablemem/c/src/purgeable_mem_c.c b/libpurgeablemem/c/src/purgeable_mem_c.c index e1a08fee34d2c2e1301cc682ff7b0f593e6d0253..3a333aa6111fbec7d54816ffc86e6e17042248bd 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