mirror of
https://git.proxmox.com/git/wasi-libc
synced 2025-06-15 11:08:19 +00:00

This incoporates pieces from musl-libc, cloudlibc, cloudabi, libpreopen, and dlmalloc, as well as a significant amount of new code.
27 lines
619 B
C
27 lines
619 B
C
#include <unistd.h>
|
|
#include <stdlib.h>
|
|
#include <errno.h>
|
|
#include <__macro_PAGESIZE.h>
|
|
|
|
/* Bare-bones implementation of sbrk: just call memory.grow. */
|
|
void *sbrk(intptr_t increment) {
|
|
/* We only supprt page-size increments. */
|
|
if (increment % PAGESIZE != 0) {
|
|
abort();
|
|
}
|
|
|
|
/* WebAssembly doesn't support shrinking linear memory. */
|
|
if (increment < 0) {
|
|
abort();
|
|
}
|
|
|
|
uintptr_t old = __builtin_wasm_memory_grow(0, (uintptr_t)increment / PAGESIZE);
|
|
|
|
if (old == SIZE_MAX) {
|
|
errno = ENOMEM;
|
|
return (void *)-1;
|
|
}
|
|
|
|
return (void *)(old * PAGESIZE);
|
|
}
|