github.com/zuoyebang/bitalostable@v1.0.1-0.20240229032404-e3b99a834294/vfs/prefetch_linux.go (about)

     1  // Copyright 2020 The LevelDB-Go and Pebble Authors. All rights reserved. Use
     2  // of this source code is governed by a BSD-style license that can be found in
     3  // the LICENSE file.
     4  
     5  //go:build linux
     6  // +build linux
     7  
     8  package vfs
     9  
    10  import "syscall"
    11  
    12  // Prefetch signals the OS (on supported platforms) to fetch the next size
    13  // bytes in file (as returned by os.File.Fd()) after offset into cache. Any
    14  // subsequent reads in that range will not issue disk IO.
    15  func Prefetch(file uintptr, offset uint64, size uint64) error {
    16  	_, _, err := syscall.Syscall(syscall.SYS_READAHEAD, uintptr(file), uintptr(offset), uintptr(size))
    17  	return err
    18  }