github.com/lheiskan/zebrapack@v4.1.1-0.20181107023619-e955d028f9bf+incompatible/msgp/advise_linux.go (about)

     1  // +build linux,!appengine
     2  
     3  package msgp
     4  
     5  import (
     6  	"os"
     7  	"syscall"
     8  )
     9  
    10  func adviseRead(mem []byte) {
    11  	syscall.Madvise(mem, syscall.MADV_SEQUENTIAL|syscall.MADV_WILLNEED)
    12  }
    13  
    14  func adviseWrite(mem []byte) {
    15  	syscall.Madvise(mem, syscall.MADV_SEQUENTIAL)
    16  }
    17  
    18  func fallocate(f *os.File, sz int64) error {
    19  	err := syscall.Fallocate(int(f.Fd()), 0, 0, sz)
    20  	if err == syscall.ENOTSUP {
    21  		return f.Truncate(sz)
    22  	}
    23  	return err
    24  }