Skip to content

Commit 6a2d8a9

Browse files
committed
mremap2 test
1 parent 839ce1f commit 6a2d8a9

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

unix/mremap_linux_test.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,15 @@ func TestMremap2(t *testing.T) {
2727
t.Fatalf("Msync: %v", err)
2828
}
2929

30-
newB, err := unix.Mremap2(b, unix.Getpagesize())
30+
bNew, err := unix.Mremap2(b, unix.Getpagesize(), unix.MREMAP_MAYMOVE)
31+
if err != nil {
32+
t.Fatalf("Mremap2: %v", err)
33+
}
34+
35+
if bNew[0] != 42 {
36+
t.Fatal("first element value was changed")
37+
}
38+
if len(bNew) != unix.Getpagesize() {
39+
t.Fatal("first ")
40+
}
3141
}

unix/syscall_unix.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,9 @@ func (m *mmapper) Mremap(oldData []byte, newData []byte, flags int) (data []byte
167167
bNew := unsafe.Slice((*byte)(unsafe.Pointer(newAddr)), len(newData))
168168
pNew := &bNew[cap(bNew)-1]
169169
m.active[pNew] = bNew
170-
delete(m.active, pOld)
170+
if flags&MREMAP_DONTUNMAP == 0 {
171+
delete(m.active, pOld)
172+
}
171173
return bNew, nil
172174
}
173175

@@ -190,7 +192,9 @@ func (m *mmapper) Mremap2(oldData []byte, newLength int, flags int) (data []byte
190192
bNew := unsafe.Slice((*byte)(unsafe.Pointer(newAddr)), newLength)
191193
pNew := &bNew[cap(bNew)-1]
192194
m.active[pNew] = bNew
193-
delete(m.active, pOld)
195+
if flags&MREMAP_DONTUNMAP == 0 {
196+
delete(m.active, pOld)
197+
}
194198
return bNew, nil
195199
}
196200

0 commit comments

Comments
 (0)