In Unix, Go can do this:
// func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error)
syscall.Mmap(., ., ., ., syscall.MAP_SHARED|syscall.XXX)
In Windows, you can use this:
https://github.com/golang/go/blob/master/src/syscall/zsyscall_windows.go#L970-L981
// func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error)
syscall.CreateFileMapping(., ., syscall.PAGE_READONLY, ., ., nil)
But I don't see any flag arguments to CreateFileMapping
for Windows.
Does anybody know how to pass flags to CreateFileMapping
function like syscall.MAP_SHARED|syscall.XXX
?
It looks like you can get the integer values for the protection flags from the Windows reference for that syscall. There doesn't seem to be a one-to-one mapping with the Unix-y flags, e.g. rather than having a flag for shared maps, it appears you get a shared map by default when you pass the call a filename.