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

Function lwp_brk

components/lwp/lwp_user_mm.c:386–416  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

384}
385
386rt_base_t lwp_brk(void *addr)
387{
388 rt_base_t ret = -1;
389 rt_varea_t varea = RT_NULL;
390 struct rt_lwp *lwp = RT_NULL;
391 size_t size = 0;
392
393 lwp = lwp_self();
394
395 if ((size_t)addr == RT_NULL)
396 {
397 addr = (char *)lwp->end_heap + 1;
398 }
399
400 if ((size_t)addr <= lwp->end_heap && (size_t)addr > USER_HEAP_VADDR)
401 {
402 ret = (size_t)addr;
403 }
404 else if ((size_t)addr <= USER_HEAP_VEND)
405 {
406 size = RT_ALIGN((size_t)addr - lwp->end_heap, ARCH_PAGE_SIZE);
407 varea = lwp_map_user_varea_ext(lwp, (void *)lwp->end_heap, size, LWP_MAP_FLAG_PREFETCH);
408 if (varea)
409 {
410 lwp->end_heap = (long)(varea->start + varea->size);
411 ret = lwp->end_heap;
412 }
413 }
414
415 return ret;
416}
417
418rt_inline rt_mem_obj_t _get_mmap_obj(struct rt_lwp *lwp)
419{

Callers 1

sys_brkFunction · 0.85

Calls 2

lwp_selfFunction · 0.85
lwp_map_user_varea_extFunction · 0.85

Tested by

no test coverage detected