2 * This software is part of the SBCL system. See the README file for
5 * This software is derived from the CMU CL system, which was
6 * written at Carnegie Mellon University and released into the
7 * public domain. The software is in the public domain and is
8 * provided with absolutely no warranty. See the COPYING and CREDITS
9 * files for more information.
20 /* Except for os_zero, these routines are only called by Lisp code.
21 * These routines may also be replaced by os-dependent versions
22 * instead. See hpux-os.c for some useful restrictions on actual
25 /* FIXME: this should be turned into a pure inline memset where it is used. */
27 os_zero(os_vm_address_t addr, os_vm_size_t length)
29 memset(addr, 0, length);
33 os_allocate(os_vm_size_t len)
35 return os_validate((os_vm_address_t)NULL, len);
39 os_allocate_at(os_vm_address_t addr, os_vm_size_t len)
41 return os_validate(addr, len);
45 os_deallocate(os_vm_address_t addr, os_vm_size_t len)
47 os_invalidate(addr,len);
50 /* (This function once tried to grow the chunk by asking os_validate
51 * whether the space was available, but that really only works under
54 os_reallocate(os_vm_address_t addr, os_vm_size_t old_len, os_vm_size_t len)
56 addr=os_trunc_to_page(addr);
57 len=os_round_up_size_to_page(len);
58 old_len=os_round_up_size_to_page(old_len);
61 return os_allocate(len);
63 long len_diff=len-old_len;
66 os_invalidate(addr+len,-len_diff);
69 os_vm_address_t new=os_allocate(len);
72 bcopy(addr,new,old_len);
73 os_invalidate(addr,old_len);