|  | // Copyright 2018 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | // +build aix dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris | 
|  |  | 
|  | package poll | 
|  |  | 
|  | import "syscall" | 
|  |  | 
|  | // Fsync wraps syscall.Fsync. | 
|  | func (fd *FD) Fsync() error { | 
|  | if err := fd.incref(); err != nil { | 
|  | return err | 
|  | } | 
|  | defer fd.decref() | 
|  | return syscall.Fsync(fd.Sysfd) | 
|  | } | 
|  |  | 
|  | func fcntl(fd int, cmd int, arg int) (int, error) { | 
|  | r, _, e := syscall.Syscall(syscall.SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) | 
|  | if e != 0 { | 
|  | return int(r), syscall.Errno(e) | 
|  | } | 
|  | return int(r), nil | 
|  | } |