]> Zhao Yanbai Git Server - minix.git/commitdiff
vm: allow split of mem_anon_contig region 03/2803/1
authorBen Gras <ben@minix3.org>
Mon, 1 Sep 2014 13:02:08 +0000 (15:02 +0200)
committerBen Gras <ben@minix3.org>
Mon, 1 Sep 2014 13:31:19 +0000 (15:31 +0200)
. so that memory of such regions can be deallocated in any order

Change-Id: I34013d6085cf19a482412cf9bed6b7f96e60e1e6

minix/servers/vm/mem_anon_contig.c
minix/servers/vm/region.c

index d2f063df14a99cb64b3e0d0ebe5b40c12ce23999..76fb3dc529df850c8da92f58f6d83aa2fffd1dae 100644 (file)
@@ -15,6 +15,8 @@ static int anon_contig_pagefault(struct vmproc *vmp, struct vir_region *region,
        int len, int *io);
 static int anon_contig_sanitycheck(struct phys_region *pr, const char *file, int line);
 static int anon_contig_writable(struct phys_region *pr);
+static void anon_contig_split(struct vmproc *vmp, struct vir_region *vr,
+                        struct vir_region *r1, struct vir_region *r2);
 static int anon_contig_resize(struct vmproc *vmp, struct vir_region *vr, vir_bytes l);
 static int anon_contig_new(struct vir_region *vr);
 static int anon_contig_pt_flags(struct vir_region *vr);
@@ -26,6 +28,7 @@ struct mem_type mem_type_anon_contig = {
        .ev_unreference = anon_contig_unreference,
        .ev_pagefault = anon_contig_pagefault,
        .ev_resize = anon_contig_resize,
+       .ev_split = anon_contig_split,
        .ev_sanitycheck = anon_contig_sanitycheck,
        .writable = anon_contig_writable,
        .pt_flags = anon_contig_pt_flags,
@@ -121,3 +124,9 @@ static int anon_contig_writable(struct phys_region *pr)
        return mem_type_anon.writable(pr);
 }
 
+static void anon_contig_split(struct vmproc *vmp, struct vir_region *vr,
+                        struct vir_region *r1, struct vir_region *r2)
+{
+       return;
+}
+
index 507407d6736291f770c98741dbb30c21d4132594..881488d7229a6bef648396d2feaca5450f937b31 100644 (file)
@@ -1160,6 +1160,7 @@ static int split_region(struct vmproc *vmp, struct vir_region *vr,
        if(!vr->def_memtype->ev_split) {
                printf("VM: split region not implemented for %s\n",
                        vr->def_memtype->name);
+               sys_diagctl_stacktrace(vmp->vm_endpoint);
                return EINVAL;
        }