Lines Matching refs:lwp

133 int lwp_user_space_init(struct rt_lwp *lwp, rt_bool_t is_fork)  in lwp_user_space_init()  argument
139 err = arch_user_space_init(lwp); in lwp_user_space_init()
145 err = rt_aspace_map(lwp->aspace, &stk_addr, in lwp_user_space_init()
156 struct rt_lwp *lwp = RT_NULL; in lwp_aspace_switch() local
160 if (thread->lwp) in lwp_aspace_switch()
162 lwp = (struct rt_lwp *)thread->lwp; in lwp_aspace_switch()
163 to_aspace = lwp->aspace; in lwp_aspace_switch()
181 void lwp_unmap_user_space(struct rt_lwp *lwp) in lwp_unmap_user_space() argument
183 if (lwp->aspace) in lwp_unmap_user_space()
184 arch_user_space_free(lwp); in lwp_unmap_user_space()
187 static void *_lwp_map_user(struct rt_lwp *lwp, void *map_va, size_t map_size, in _lwp_map_user() argument
199 ret = rt_aspace_map_private(lwp->aspace, &va, map_size, MMU_MAP_U_RWCB, flags); in _lwp_map_user()
210 int lwp_unmap_user(struct rt_lwp *lwp, void *va) in lwp_unmap_user() argument
212 int err = rt_aspace_unmap(lwp->aspace, va); in lwp_unmap_user()
230 int lwp_unmap_user_phy(struct rt_lwp *lwp, void *va) in lwp_unmap_user_phy() argument
232 return lwp_unmap_user(lwp, va); in lwp_unmap_user_phy()
235 void *lwp_map_user(struct rt_lwp *lwp, void *map_va, size_t map_size, int text) in lwp_map_user() argument
249 ret = _lwp_map_user(lwp, map_va, map_size, text); in lwp_map_user()
285 static rt_varea_t _lwp_map_user_varea(struct rt_lwp *lwp, void *map_va, size_t map_size, size_t fla… in _lwp_map_user_varea() argument
295 ret = rt_aspace_map_private(lwp->aspace, &va, map_size, in _lwp_map_user_varea()
299 varea = rt_aspace_query(lwp->aspace, va); in _lwp_map_user_varea()
311 static rt_varea_t _map_user_varea_ext(struct rt_lwp *lwp, void *map_va, size_t map_size, size_t fla… in _map_user_varea_ext() argument
324 return _lwp_map_user_varea(lwp, map_va, map_size, flags); in _map_user_varea_ext()
327 rt_varea_t lwp_map_user_varea_ext(struct rt_lwp *lwp, void *map_va, size_t map_size, size_t flags) in lwp_map_user_varea_ext() argument
329 return _map_user_varea_ext(lwp, map_va, map_size, flags); in lwp_map_user_varea_ext()
332 rt_varea_t lwp_map_user_varea(struct rt_lwp *lwp, void *map_va, size_t map_size) in lwp_map_user_varea() argument
334 return _map_user_varea_ext(lwp, map_va, map_size, LWP_MAP_FLAG_NONE); in lwp_map_user_varea()
337 void *lwp_map_user_phy(struct rt_lwp *lwp, void *map_va, void *map_pa, in lwp_map_user_phy() argument
362 .limit_range_size = lwp->aspace->size, in lwp_map_user_phy()
363 .limit_start = lwp->aspace->start, in lwp_map_user_phy()
372 rt_aspace_map_phy(lwp->aspace, &hint, attr, MM_PA_TO_OFF(map_pa), (void **)&va); in lwp_map_user_phy()
390 struct rt_lwp *lwp = RT_NULL; in lwp_brk() local
393 lwp = lwp_self(); in lwp_brk()
397 addr = (char *)lwp->end_heap + 1; in lwp_brk()
400 if ((size_t)addr <= lwp->end_heap && (size_t)addr > USER_HEAP_VADDR) in lwp_brk()
406 size = RT_ALIGN((size_t)addr - lwp->end_heap, ARCH_PAGE_SIZE); in lwp_brk()
407 varea = lwp_map_user_varea_ext(lwp, (void *)lwp->end_heap, size, LWP_MAP_FLAG_PREFETCH); in lwp_brk()
410 lwp->end_heap = (long)(varea->start + varea->size); in lwp_brk()
411 ret = lwp->end_heap; in lwp_brk()
418 rt_inline rt_mem_obj_t _get_mmap_obj(struct rt_lwp *lwp) in _get_mmap_obj() argument
468 void *lwp_user_memory_remap_to_kernel(rt_lwp_t lwp, void *uaddr, size_t length) in lwp_user_memory_remap_to_kernel() argument
479 uarea = rt_aspace_query(lwp->aspace, uaddr); in lwp_user_memory_remap_to_kernel()
551 void *lwp_mmap2(struct rt_lwp *lwp, void *addr, size_t length, int prot, in lwp_mmap2() argument
601 uspace = lwp->aspace; in lwp_mmap2()
603 mem_obj = _get_mmap_obj(lwp); in lwp_mmap2()
631 mmap2.lwp = lwp; in lwp_mmap2()
658 int lwp_munmap(struct rt_lwp *lwp, void *addr, size_t length) in lwp_munmap() argument
662 RT_ASSERT(lwp); in lwp_munmap()
663 ret = rt_aspace_unmap_range(lwp->aspace, addr, length); in lwp_munmap()
667 void *lwp_mremap(struct rt_lwp *lwp, void *old_address, size_t old_size, in lwp_mremap() argument
670 RT_ASSERT(lwp); in lwp_mremap()
672 return rt_aspace_mremap_range(lwp->aspace, old_address, old_size, new_size, flags, new_address); in lwp_mremap()
677 struct rt_lwp *lwp = RT_NULL; in lwp_get_from_user() local
694 lwp = lwp_self(); in lwp_get_from_user()
695 if (!lwp) in lwp_get_from_user()
700 return lwp_data_get(lwp, dst, src, size); in lwp_get_from_user()
705 struct rt_lwp *lwp = RT_NULL; in lwp_put_to_user() local
721 lwp = lwp_self(); in lwp_put_to_user()
722 if (!lwp) in lwp_put_to_user()
727 return lwp_data_put(lwp, dst, src, size); in lwp_put_to_user()
782 int lwp_user_accessible_ext(struct rt_lwp *lwp, void *addr, size_t size) in lwp_user_accessible_ext() argument
787 if (!lwp) in lwp_user_accessible_ext()
824 tmp_addr = lwp_v2p(lwp, addr_start); in lwp_user_accessible_ext()
826 !rt_aspace_query(lwp->aspace, addr_start)) in lwp_user_accessible_ext()
845 size_t lwp_data_get(struct rt_lwp *lwp, void *dst, void *src, size_t size) in lwp_data_get() argument
872 if (rt_aspace_page_get(lwp->aspace, src_iter, dst_iter)) in lwp_data_get()
883 if (rt_aspace_page_get(lwp->aspace, src_iter_aligned, temp_page)) in lwp_data_get()
901 size_t lwp_data_put(struct rt_lwp *lwp, void *dst, void *src, size_t size) in lwp_data_put() argument
929 if (rt_aspace_page_put(lwp->aspace, dst_iter, src_iter)) in lwp_data_put()
940 if (rt_aspace_page_get(lwp->aspace, dst_iter_aligned, temp_page)) in lwp_data_put()
943 if (rt_aspace_page_put(lwp->aspace, dst_iter_aligned, temp_page)) in lwp_data_put()
960 size_t lwp_data_set(struct rt_lwp *lwp, void *dst, int byte, size_t size) in lwp_data_set() argument
989 if (rt_aspace_page_get(lwp->aspace, dst_iter_aligned, temp_page)) in lwp_data_set()
993 if (rt_aspace_page_put(lwp->aspace, dst_iter_aligned, temp_page)) in lwp_data_set()
1008 size_t lwp_user_strlen_ext(struct rt_lwp *lwp, const char *s) in lwp_user_strlen_ext() argument
1019 if (lwp == RT_NULL) in lwp_user_strlen_ext()
1033 get_bytes = lwp_data_get(lwp, temp_buf, addr_start, ARCH_PAGE_SIZE); in lwp_user_strlen_ext()
1036 … LOG_I("lwp_data_get(lwp=%p,dst=0x%lx,src=0x%lx,size=0x1000) failed", lwp, temp_buf, addr_start); in lwp_user_strlen_ext()
1049 get_bytes = lwp_data_get(lwp, temp_buf, addr_start + len, ARCH_PAGE_SIZE); in lwp_user_strlen_ext()
1053 lwp, temp_buf, addr_start); in lwp_user_strlen_ext()
1062 lwp, temp_buf, addr_start); in lwp_user_strlen_ext()
1075 struct rt_lwp *lwp = RT_NULL; in lwp_user_strlen() local
1077 lwp = lwp_self(); in lwp_user_strlen()
1078 RT_ASSERT(lwp != RT_NULL); in lwp_user_strlen()
1080 return lwp_user_strlen_ext(lwp, s); in lwp_user_strlen()
1083 size_t lwp_strlen(struct rt_lwp *lwp, const char *s) in lwp_strlen() argument
1086 return lwp_user_strlen_ext(lwp, s); in lwp_strlen()