// Copyright 2014 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 dragonfly freebsd linux netbsd openbsdpackageuniximport"unsafe"// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux// systems by fcntl_linux_32bit.go to be SYS_FCNTL64.varfcntl64Syscalluintptr=SYS_FCNTLfuncfcntl(fdint,cmd,argint)(int,error){valptr,_,errno:=Syscall(fcntl64Syscall,uintptr(fd),uintptr(cmd),uintptr(arg))varerrerroriferrno!=0{err=errno}returnint(valptr),err}// FcntlInt performs a fcntl syscall on fd with the provided command and argument.funcFcntlInt(fduintptr,cmd,argint)(int,error){returnfcntl(int(fd),cmd,arg)}// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.funcFcntlFlock(fduintptr,cmdint,lk*Flock_t)error{_,_,errno:=Syscall(fcntl64Syscall,fd,uintptr(cmd),uintptr(unsafe.Pointer(lk)))iferrno==0{returnnil}returnerrno}