Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

liballoc

C binding of talc crate for x86 or x86_64 OS to create a scalable, high performance heap.

Usage

Download the header file and lib from releases.

Link the library to your project.

Build

Build directly to get the two target files:

cargo build --release

The production build will be in target/release/<target>/ directory.

And use cbindgen to generate the header file:

cargo install cbindgen
cbindgen --output alloc.h

Example

#include <stdint.h>
#include "alloc.h"
void test_alloc() {
 uint8_t alloc_test[500];
 bool result = heap_init((uint8_t *)alloc_test, 500);
 if (result) {
 void *ptr1 = malloc(10);
 free(ptr1);
 }
}

For general use, you can map the address space of the memory you want to use as a heap in the page table, and then pass the start address and size to the heap_init.

#include <stdint.h>
#include "alloc.h"
const uint8_t *heap_start = (uint8_t *)0x100000;
const size_t heap_size = 8 * 1024 * 1024;
void test_alloc() {
 map_page(heap_start, heap_size);
 if (heap_init(heap_start, heap_size)) {
 void *ptr1 = malloc(10);
 free(ptr1);
 }
}

About

C binding of talc crate.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /