aboutsummaryrefslogtreecommitdiff
path: root/sys/src/mremap.c
blob: dda05ce66dac5ee07d81b5b3dd6d10b0e7171294 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "internal.h"

int
sys·mremap(void *addr, uintptr from, uintptr to, int flags, void **ret)
{
    long r;
    void *new;

    if(to >= PTRDIFF_MAX)
        return sys·ErrorNoMemory;

    new = (flags & sys·RemapFixed) ? *ret : nil;
    r = syscall(·MRemap, addr, from, to, flags, new);
    if(r > 0){
        *ret = (void*)r;
        return 0;
    }

    return error(r);
}