1096ace100d0d3ddd285a399f82028a864f3bc0c
[musl] / src / mman / mremap.c
1 #include <unistd.h>
2 #include <sys/mman.h>
3 #include <errno.h>
4 #include <stdint.h>
5 #include <stdarg.h>
6 #include "syscall.h"
7 #include "libc.h"
8
9 void *__mremap(void *old_addr, size_t old_len, size_t new_len, int flags, ...)
10 {
11         va_list ap;
12         void *new_addr;
13
14         if (new_len >= PTRDIFF_MAX) {
15                 errno = ENOMEM;
16                 return MAP_FAILED;
17         }
18
19         va_start(ap, flags);
20         new_addr = va_arg(ap, void *);
21         va_end(ap);
22
23         return (void *)syscall(SYS_mremap, old_addr, old_len, new_len, flags, new_addr);
24 }
25
26 weak_alias(__mremap, mremap);