llvm-project

Форк
0
/
freelist_malloc.cpp 
50 строк · 1.5 Кб
1
//===-- Implementation for freelist_malloc --------------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8

9
#include "src/__support/freelist_heap.h"
10
#include "src/stdlib/aligned_alloc.h"
11
#include "src/stdlib/calloc.h"
12
#include "src/stdlib/free.h"
13
#include "src/stdlib/malloc.h"
14
#include "src/stdlib/realloc.h"
15

16
#include <stddef.h>
17

18
namespace LIBC_NAMESPACE {
19

20
namespace {
21
#ifdef LIBC_FREELIST_MALLOC_SIZE
22
// This is set via the LIBC_CONF_FREELIST_MALLOC_BUFFER_SIZE configuration.
23
constexpr size_t SIZE = LIBC_FREELIST_MALLOC_SIZE;
24
#else
25
#error "LIBC_FREELIST_MALLOC_SIZE was not defined for this build."
26
#endif
27
LIBC_CONSTINIT FreeListHeapBuffer<SIZE> freelist_heap_buffer;
28
} // namespace
29

30
FreeListHeap<> *freelist_heap = &freelist_heap_buffer;
31

32
LLVM_LIBC_FUNCTION(void *, malloc, (size_t size)) {
33
  return freelist_heap->allocate(size);
34
}
35

36
LLVM_LIBC_FUNCTION(void, free, (void *ptr)) { return freelist_heap->free(ptr); }
37

38
LLVM_LIBC_FUNCTION(void *, calloc, (size_t num, size_t size)) {
39
  return freelist_heap->calloc(num, size);
40
}
41

42
LLVM_LIBC_FUNCTION(void *, realloc, (void *ptr, size_t size)) {
43
  return freelist_heap->realloc(ptr, size);
44
}
45

46
LLVM_LIBC_FUNCTION(void *, aligned_alloc, (size_t alignment, size_t size)) {
47
  return freelist_heap->aligned_allocate(alignment, size);
48
}
49

50
} // namespace LIBC_NAMESPACE
51

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.