123456789101112131415161718192021222324252627282930313233343536373839404142 |
- use core::ptr;
- use header::errno::ENOMEM;
- use platform;
- use platform::types::*;
- use platform::{Pal, Sys};
- static mut BRK: *mut c_void = ptr::null_mut();
- #[no_mangle]
- pub unsafe extern "C" fn brk(addr: *mut c_void) -> c_int {
- BRK = Sys::brk(addr);
- if BRK < addr {
- platform::errno = ENOMEM;
- return -1;
- }
- 0
- }
- #[no_mangle]
- pub unsafe extern "C" fn sbrk(incr: intptr_t) -> *mut c_void {
- if BRK.is_null() {
- BRK = Sys::brk(ptr::null_mut());
- }
- let old_brk = BRK;
- if incr != 0 {
- let addr = old_brk.offset(incr);
- BRK = Sys::brk(addr);
- if BRK < addr {
- platform::errno = ENOMEM;
- return -1isize as *mut c_void;
- }
- }
- old_brk as *mut c_void
- }
|