39 if (ptr + len <= region->range.base + region->
range.
size) {
46void *
DupUserMem(
const void *ptr,
size_t len,
int needCopy)
69 struct stat bufRet = {0};
78 if ((pathRet != NULL) && (*pathRet ==
'/')) {
86 ret = fs_getfilep(fd, &
file);
90 if (!S_ISDIR(bufRet.st_mode)) {
101 PointerFree(pathRet);
109 *pathBuf = (
char *)
LOS_MemAlloc(OS_SYS_MEM_ADDR, PATH_MAX + 1);
110 if (*pathBuf == NULL) {
119 }
else if (ret > PATH_MAX) {
122 return -ENAMETOOLONG;
124 (*pathBuf)[ret] =
'\0';
int vfs_normalize_pathat(int dirfd, const char *filename, char **pathname)
VOID * LOS_MemAlloc(VOID *pool, UINT32 size)
从指定内存池中申请size长度的内存,注意这可不是从内核堆空间中申请内存
UINT32 LOS_MemFree(VOID *pool, VOID *ptr)
释放从指定动态内存中申请的内存
LosVmMapRegion * LOS_RegionFind(LosVmSpace *vmSpace, VADDR_T addr)
查找线性区 根据起始地址在进程空间内查找是否存在
INT32 LOS_StrncpyFromUser(CHAR *dst, const CHAR *src, INT32 count)
虚拟空间,每个进程都有一个属于自己的虚拟内存地址空间
ARG_NUM_3 ARG_NUM_1 ARG_NUM_2 ARG_NUM_2 ARG_NUM_3 ARG_NUM_1 ARG_NUM_4 ARG_NUM_2 ARG_NUM_2 ARG_NUM_5 ARG_NUM_2 void
int CheckRegion(const LosVmSpace *space, VADDR_T ptr, size_t len)
int GetFullpath(int fd, const char *path, char **fullpath)
int UserPathCopy(const char *userPath, char **pathBuf)
void * DupUserMem(const void *ptr, size_t len, int needCopy)
size_t LOS_ArchCopyFromUser(void *dst, const void *src, size_t len)
int GetAssociatedSystemFd(int procFd)
获取绑定的系统描述符