From b81ab0419c535a5600a469182f0a35195535067d Mon Sep 17 00:00:00 2001 From: Fazal Majid Date: Mon, 7 Dec 2015 17:11:25 -0800 Subject: [PATCH] fix tsm1 for Solaris #4787, passes unit tests now --- tsdb/engine/tsm1/mmap_solaris.go | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tsdb/engine/tsm1/mmap_solaris.go diff --git a/tsdb/engine/tsm1/mmap_solaris.go b/tsdb/engine/tsm1/mmap_solaris.go new file mode 100644 index 00000000000..fbada23ffb6 --- /dev/null +++ b/tsdb/engine/tsm1/mmap_solaris.go @@ -0,0 +1,33 @@ +// +build solaris + +package tsm1 + +import ( + "os" + "syscall" + + "golang.org/x/sys/unix" +) + + +func mmap(f *os.File, offset int64, length int) ([]byte, error) { + mmap, err := unix.Mmap(int(f.Fd()), 0, length, syscall.PROT_READ, syscall.MAP_SHARED) + if err != nil { + return nil, err + } + + if err := unix.Madvise(mmap, syscall.MADV_RANDOM); err != nil { + return nil, err + } + + return mmap, nil +} + +func munmap(b []byte) (err error) { + return unix.Munmap(b) +} + +// From: github.com/boltdb/bolt/bolt_unix.go +func madvise(b []byte, advice int) (err error) { + return unix.Madvise(b, advice) +}