#![no_std]
#![feature(lang_items)]
#![allocator]
#![feature(allocator)]
#[no_mangle]
pub extern "C" fn __rust_allocate(size: usize, align: usize) -> *mut u8 {
unsafe { imp::allocate(size, align) }
}
#[no_mangle]
pub extern "C" fn __rust_deallocate(ptr: *mut u8, old_size: usize, align: usize) {
unsafe { imp::deallocate(ptr, old_size, align) }
}
#[no_mangle]
pub extern "C" fn __rust_reallocate(
ptr: *mut u8,
old_size: usize,
size: usize,
align: usize,
) -> *mut u8 {
unsafe { imp::reallocate(ptr, old_size, size, align) }
}
#[no_mangle]
pub extern "C" fn __rust_reallocate_inplace(
ptr: *mut u8,
old_size: usize,
size: usize,
align: usize,
) -> usize {
unsafe { imp::reallocate_inplace(ptr, old_size, size, align) }
}
#[no_mangle]
pub extern "C" fn __rust_allocate_zeroed(size: usize, align: usize) -> *mut u8 {
unsafe { imp::allocate_zeroed(size, align) }
}
#[no_mangle]
pub extern "C" fn __rust_usable_size(size: usize, align: usize) -> usize {
imp::usable_size(size, align)
}
mod imp {
extern "C" {
fn malloc(size: usize) -> *mut u8;
fn memset(ptr: *mut u8, ch: i32, size: usize);
fn realloc(ptr: *mut u8, size: usize) -> *mut u8;
fn free(ptr: *mut u8);
}
pub unsafe fn allocate(size: usize, _: usize) -> *mut u8 {
malloc(size)
}
pub unsafe fn reallocate(ptr: *mut u8, _: usize, size: usize, _: usize) -> *mut u8 {
realloc(ptr, size)
}
pub unsafe fn allocate_zeroed(size: usize, _: usize) -> *mut u8 {
let ptr = malloc(size);
memset(ptr,0,size);
ptr
}
pub unsafe fn reallocate_inplace(
_ptr: *mut u8,
old_size: usize,
_size: usize,
_align: usize,
) -> usize {
old_size
}
pub unsafe fn deallocate(ptr: *mut u8, _: usize, _: usize) {
free(ptr)
}
pub fn usable_size(size: usize, _align: usize) -> usize {
size
}
}