src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

mmap.go (937B)


      1 // Copyright 2011 The Go Authors.  All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 // This package is a lightly modified version of the mmap code
      6 // in github.com/google/codesearch/index.
      7 
      8 // The mmap package provides an abstraction for memory mapping files
      9 // on different platforms.
     10 package mmap
     11 
     12 import (
     13 	"os"
     14 )
     15 
     16 // The backing file is never closed, so Data
     17 // remains valid for the lifetime of the process.
     18 type Data struct {
     19 	// TODO(pjw): might be better to define versions of Data
     20 	// for the 3 specializations
     21 	f    *os.File
     22 	Data []byte
     23 	// Some windows magic
     24 	Windows interface{}
     25 }
     26 
     27 // Mmap maps the given file into memory.
     28 // When remapping a file, pass the most recently returned Data.
     29 func Mmap(f *os.File) (*Data, error) {
     30 	return mmapFile(f)
     31 }
     32 
     33 // Munmap unmaps the given file from memory.
     34 func Munmap(d *Data) error {
     35 	return munmapFile(d)
     36 }