MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / __setup_additional_pages

Function __setup_additional_pages

components/lwp/arch/common/vdso.c:58–84  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

56int init_ret_flag = RT_EOK;
57
58static int __setup_additional_pages(enum vdso_abi abi, struct rt_lwp *lwp)
59{
60 RT_ASSERT(lwp != RT_NULL);
61
62 int ret;
63 void *vdso_base = RT_NULL;
64 unsigned long vdso_data_len, vdso_text_len;
65
66 vdso_data_len = VVAR_NR_PAGES * ARCH_PAGE_SIZE;
67 vdso_text_len = vdso_info[abi].vdso_pages << ARCH_PAGE_SHIFT;
68
69 vdso_base = lwp_map_user_phy(lwp, RT_NULL, rt_kmem_v2p((void *)vdso_data), vdso_data_len, 0);
70 if (vdso_base != RT_NULL)
71 {
72 ret = RT_EOK;
73 }
74 else
75 {
76 ret = RT_ERROR;
77 }
78
79 vdso_base += vdso_data_len;
80 vdso_base = lwp_map_user_phy(lwp, vdso_base, rt_kmem_v2p((void *)vdso_info[abi].vdso_code_start), vdso_text_len, 0);
81
82 lwp->vdso_vbase = vdso_base;
83 return ret;
84}
85
86int arch_setup_additional_pages(struct rt_lwp *lwp)
87{

Callers 1

Calls 2

lwp_map_user_phyFunction · 0.85
rt_kmem_v2pFunction · 0.85

Tested by

no test coverage detected