#
8618d94a |
| 16-Feb-2019 |
Matthew Dillon <dillon@apollo.backplane.com> |
libc - Use sbrk() system call, remove brk()
* Attempt to use the kernel sbrk() system call. If it fails with EOPNOTSUPP, back-off to the older libc sbrk() emulation code which uses still-presen
libc - Use sbrk() system call, remove brk()
* Attempt to use the kernel sbrk() system call. If it fails with EOPNOTSUPP, back-off to the older libc sbrk() emulation code which uses still-present but obsolete break() system call.
* Changes support both old and new kernels. Older kernels do not implement the sbrk() system call, causing the call to return -1/EOPNOTSUPP. Note that older kernels did not generate an ENOSYS/signal for sbrk().
* sbrk() cannot support negative increments. Allow only 0 and positive increments.
* Fix MPSAFE issues (requires new kernels) while we are here.
* Remove brk() support entirely. This was also emulated in older kernels using break().
* These changes are necessary in order to support mmap() hinting above RLIMIT_DATA's current value. Older kernels only support hinting above the system maximum value (above the 32GB mark). Several languages in dports really want to mmap() addresses below 4GB.
show more ...
|