The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Распечатка 10.4 Реализация malloc в uClibc с помощью "кучи"

Распечатка 10.4 Реализация malloc в uClibc с помощью "кучи"

Предыдущая  Содержание  Следующая V*D*V

Распечатка 10.4

 

HEAP_DECLARE_STATIC_FREE_AREA (initial_fa, 256);

struct heap __malloc_heap = HEAP_INIT_WITH_FA (initial_fa);

 

void * malloc(size_t size) {

  …

  …

  mem = malloc_from_heap (size, &__malloc_heap);

  if (unlikely (!mem))

  {

  oom:

    __set_errno (ENOMEM);

    return 0;

  }

  return mem;

}

 

static void *

malloc_from_heap (size_t size, struct heap *heap){

 

  /* Сначала попробуем выделить из области внутренней "кучи" */

  __heap_lock (heap);

 

  mem = __heap_alloc (heap, &size);

 

  __heap_unlock (heap);

 

  /* при неудаче вызываем mmap */

  if (unlikely (! mem)) {

    /* Из "кучи" выделить не смогли, */

    block = mmap (0, block_size, PROT_READ | PROT_WRITE,

                  MAP_SHARED | MAP_ANONYMOUS, 0, 0);

  }

}

Предыдущая  Содержание  Следующая