...

Source file src/internal/poll/fd_fsync_darwin.go

     1	// Copyright 2018 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	package poll
     6	
     7	import (
     8		"syscall"
     9		_ "unsafe" // for go:linkname
    10	)
    11	
    12	// Fsync invokes SYS_FCNTL with SYS_FULLFSYNC because
    13	// on OS X, SYS_FSYNC doesn't fully flush contents to disk.
    14	// See Issue #26650 as well as the man page for fsync on OS X.
    15	func (fd *FD) Fsync() error {
    16		if err := fd.incref(); err != nil {
    17			return err
    18		}
    19		defer fd.decref()
    20	
    21		_, e1 := fcntl(fd.Sysfd, syscall.F_FULLFSYNC, 0)
    22		return e1
    23	}
    24	
    25	// Implemented in syscall/syscall_darwin.go.
    26	//go:linkname fcntl syscall.fcntl
    27	func fcntl(fd int, cmd int, arg int) (int, error)
    28	

View as plain text