From 47b0b9f7b0aeb9e1b566f4eddc877528b2a38a68 Mon Sep 17 00:00:00 2001 From: Fabian Reinartz Date: Tue, 4 Apr 2017 16:04:29 +0200 Subject: [PATCH] vendor: add tsdb support for windows --- vendor/github.com/prometheus/tsdb/db_unix.go | 17 ++-------- .../github.com/prometheus/tsdb/db_windows.go | 34 +++++++++++++++++++ vendor/vendor.json | 6 ++-- 3 files changed, 40 insertions(+), 17 deletions(-) create mode 100644 vendor/github.com/prometheus/tsdb/db_windows.go diff --git a/vendor/github.com/prometheus/tsdb/db_unix.go b/vendor/github.com/prometheus/tsdb/db_unix.go index 2e673f951..814bee851 100644 --- a/vendor/github.com/prometheus/tsdb/db_unix.go +++ b/vendor/github.com/prometheus/tsdb/db_unix.go @@ -4,24 +4,13 @@ package tsdb import ( "os" - "unsafe" - - "golang.org/x/sys/unix" + "syscall" ) func mmap(f *os.File, length int) ([]byte, error) { - return unix.Mmap(int(f.Fd()), 0, length, unix.PROT_READ, unix.MAP_SHARED) + return syscall.Mmap(int(f.Fd()), 0, length, syscall.PROT_READ, syscall.MAP_SHARED) } func munmap(b []byte) (err error) { - return unix.Munmap(b) -} - -// unix.Madvise is not defined for darwin, so we define it ourselves. -func madvise(b []byte, advice int) (err error) { - _, _, e1 := unix.Syscall(unix.SYS_MADVISE, uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), uintptr(advice)) - if e1 != 0 { - err = e1 - } - return + return syscall.Munmap(b) } diff --git a/vendor/github.com/prometheus/tsdb/db_windows.go b/vendor/github.com/prometheus/tsdb/db_windows.go new file mode 100644 index 000000000..6285e6df7 --- /dev/null +++ b/vendor/github.com/prometheus/tsdb/db_windows.go @@ -0,0 +1,34 @@ +package tsdb + +import ( + "os" + "syscall" + "unsafe" +) + +func mmap(f *os.File, sz int) ([]byte, error) { + low, high := uint32(size), uint32(size>>32) + + h, errno := syscall.CreateFileMapping(syscall.Handle(f.Fd()), nil, syscall.PAGE_READONLY, low, high, nil) + if h == 0 { + return os.NewSyscallError("CreateFileMapping", errno) + } + + addr, errno := syscall.MapViewOfFile(h, syscall.FILE_MAP_READ, 0, 0, uintptr(sz)) + if addr == 0 { + return os.NewSyscallError("MapViewOfFile", errno) + } + + if err := syscall.CloseHandle(syscall.Handle(h)); err != nil { + return os.NewSyscallError("CloseHandle", err) + } + + return (*[1 << 30]byte)(unsafe.Pointer(addr))[:sz], nil +} + +func munmap(b []byte) error { + if err := syscall.UnmapViewOfFile((uintptr)(unsafe.Pointer(&b[0]))); err != nil { + return os.NewSyscallError("UnmapViewOfFile", err) + } + return nil +} diff --git a/vendor/vendor.json b/vendor/vendor.json index a390de54b..7be890fc5 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -657,10 +657,10 @@ "revisionTime": "2016-04-11T19:08:41Z" }, { - "checksumSHA1": "yKs0vGrGUdwhgmXGWY6We0O75hY=", + "checksumSHA1": "h+PaOHjVTHoL0ZwZ5CEbiWDNqwk=", "path": "github.com/prometheus/tsdb", - "revision": "10c7c9acbe0175a411bce90cd7a0d9d7a13d6a83", - "revisionTime": "2017-04-04T09:27:26Z" + "revision": "1579e12011fbf6249c507f9acae6b610e2870a71", + "revisionTime": "2017-04-04T13:59:52Z" }, { "checksumSHA1": "Qwlzvcx5Lbo9Nzb75AGgiiGszZI=",