diff --git a/kernel/base/include/los_vm_map.h b/kernel/base/include/los_vm_map.h index 344e1ad8..27145950 100644 --- a/kernel/base/include/los_vm_map.h +++ b/kernel/base/include/los_vm_map.h @@ -157,7 +157,8 @@ typedef struct VmSpace { #define VM_MAP_REGION_FLAG_SHM (1<<16) #define VM_MAP_REGION_FLAG_FIXED (1<<17) #define VM_MAP_REGION_FLAG_FIXED_NOREPLACE (1<<18) -#define VM_MAP_REGION_FLAG_INVALID (1<<19) /* indicates that flags are not specified */ +#define VM_MAP_REGION_FLAG_LITEIPC (1<<19) +#define VM_MAP_REGION_FLAG_INVALID (1<<20) /* indicates that flags are not specified */ STATIC INLINE UINT32 OsCvtProtFlagsToRegionFlags(unsigned long prot, unsigned long flags) { diff --git a/kernel/base/vm/los_vm_dump.c b/kernel/base/vm/los_vm_dump.c index f326ea12..aa6e005c 100644 --- a/kernel/base/vm/los_vm_dump.c +++ b/kernel/base/vm/los_vm_dump.c @@ -76,6 +76,8 @@ const CHAR *OsGetRegionNameOrFilePath(LosVmMapRegion *region) return "MMAP"; } else if (region->regionFlags & VM_MAP_REGION_FLAG_SHM) { return "SHM"; + } else if (region->regionFlags & VM_MAP_REGION_FLAG_LITEIPC) { + return "LITEIPC"; } else { return ""; } diff --git a/kernel/base/vm/los_vm_syscall.c b/kernel/base/vm/los_vm_syscall.c index 6aa23993..1347dae0 100644 --- a/kernel/base/vm/los_vm_syscall.c +++ b/kernel/base/vm/los_vm_syscall.c @@ -273,6 +273,8 @@ STATIC UINT32 OsInheritOldRegionName(UINT32 oldRegionFlags) vmFlags |= VM_MAP_REGION_FLAG_MMAP; } else if (oldRegionFlags & VM_MAP_REGION_FLAG_SHM) { vmFlags |= VM_MAP_REGION_FLAG_SHM; + } else if (oldRegionFlags & VM_MAP_REGION_FLAG_LITEIPC) { + vmFlags |= VM_MAP_REGION_FLAG_LITEIPC; } return vmFlags; @@ -298,7 +300,9 @@ INT32 LOS_DoMprotect(VADDR_T vaddr, size_t len, unsigned long prot) goto OUT_MPROTECT; } - if ((region->regionFlags & VM_MAP_REGION_FLAG_VDSO) || (region->regionFlags & VM_MAP_REGION_FLAG_HEAP)) { + if ((region->regionFlags & VM_MAP_REGION_FLAG_VDSO) || + (region->regionFlags & VM_MAP_REGION_FLAG_HEAP) || + (region->regionFlags & VM_MAP_REGION_FLAG_LITEIPC)) { ret = -EPERM; goto OUT_MPROTECT; } diff --git a/kernel/extended/liteipc/hm_liteipc.c b/kernel/extended/liteipc/hm_liteipc.c index 2f2fbf71..3671e1ee 100644 --- a/kernel/extended/liteipc/hm_liteipc.c +++ b/kernel/extended/liteipc/hm_liteipc.c @@ -239,6 +239,7 @@ LITE_OS_SEC_TEXT STATIC int LiteIpcMmap(struct file *filep, LosVmMapRegion *regi goto ERROR_MAP_OUT; } ipcInfo->pool.poolSize = region->range.size; + region->regionFlags |= VM_MAP_REGION_FLAG_LITEIPC; return 0; ERROR_MAP_OUT: LOS_VFree(ipcInfo->pool.kvaddr);