OSDEV: Разработка аллокатора на С++ часть 5. osdev-libstdc

от автора

Приветствую!

Это обзорная статья на этот раз совсем простая. Используется уже написанный аллокатор. Я лишь ставлю в известность читателей о существовании в osdev-libstdc вполне стандартных функций aligned_alloc, malloc, calloc, realloc и free. Их реализация примитивна:

namespace{static dux::spin_lock gLock;}__MAYBE_BEGIN_STD_NAMESPACEvoid *aligned_alloc(size_t alignment, size_t size){    __STD_NAMESPACE::lock_guard g(gLock);    return mem_malloc_aligned(alignment, size);}void *calloc(size_t num, size_t size){    __STD_NAMESPACE::lock_guard g(gLock);    return mem_calloc(num, size);}void free(void *ptr){    __STD_NAMESPACE::lock_guard g(gLock);    mem_free(ptr);}void *malloc(size_t size){    __STD_NAMESPACE::lock_guard g(gLock);    return mem_malloc(size);}void *realloc(void *ptr, size_t new_size){    __STD_NAMESPACE::lock_guard g(gLock);    return mem_realloc(ptr, new_size);}

Думаю на этом я могу поставить жирную точку на реализации аллокатора для malloc для свой ОС.

Дальше уже пишем ABI с частями libcxxrt. Думаю даже demangler приделается без проблем с такой osdev-libstdc …

Далее new/delete.

До новых встреч!

ссылка на оригинал статьи https://habr.com/ru/articles/1052784/