Skip to content

Commit be024e2

Browse files
committed
x/sys: add unsafe mmap, munmap, mremap
Fixes golang/go#56123
1 parent 348425a commit be024e2

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

Diff for: unix/mremap.go

+5
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,8 @@ func (m *mremapMmapper) Mremap(oldData []byte, newLength int, flags int) (data [
5050
func Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {
5151
return mapper.Mremap(oldData, newLength, flags)
5252
}
53+
54+
func MremapPtr(oldAddr unsafe.Pointer, oldSize uintptr, newAddr unsafe.Pointer, newSize uintptr, flags int) (ret unsafe.Pointer, err error) {
55+
xaddr, err := mapper.mremap(uintptr(oldAddr), oldSize, newSize, flags, uintptr(newAddr))
56+
return unsafe.Pointer(xaddr), err
57+
}

Diff for: unix/syscall_unix.go

+9
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,15 @@ func Munmap(b []byte) (err error) {
154154
return mapper.Munmap(b)
155155
}
156156

157+
func MmapPtr(addr unsafe.Pointer, length uintptr, prot int, flags int, fd int, offset int64) (ret unsafe.Pointer, err error) {
158+
xaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset)
159+
return unsafe.Pointer(xaddr), err
160+
}
161+
162+
func MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) {
163+
return mapper.munmap(uintptr(addr), length)
164+
}
165+
157166
func Read(fd int, p []byte) (n int, err error) {
158167
n, err = read(fd, p)
159168
if raceenabled {

0 commit comments

Comments
 (0)