#define _GNU_SOURCE
#include <unistd.h>
#include <sys/mman.h>
#include <errno.h>
#include <stdint.h>
#include <stdarg.h>
#include "syscall.h"
#include "libc.h"

static void dummy(void) {}
weak_alias(dummy, __vm_wait);

void* __mremap(void* old_addr, size_t old_len, size_t new_len, int flags, ...) {
  va_list ap;
  void* new_addr = 0;

  if (new_len >= PTRDIFF_MAX) {
    errno = ENOMEM;
    return MAP_FAILED;
  }

  if (flags & MREMAP_FIXED) {
    __vm_wait();
    va_start(ap, flags);
    new_addr = va_arg(ap, void*);
    va_end(ap);
  }

  return (void*)syscall(SYS_mremap, old_addr, old_len, new_len, flags,
                        new_addr);
}

weak_alias(__mremap, mremap);
