fcntl_unix.mx raw

   1  // Copyright 2023 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  //go:build unix
   6  
   7  package unix
   8  
   9  import (
  10  	"syscall"
  11  	_ "unsafe" // for go:linkname
  12  )
  13  
  14  // Implemented in the runtime package.
  15  //
  16  //go:linkname fcntl runtime.fcntl
  17  func fcntl(fd int32, cmd int32, arg int32) (int32, int32)
  18  
  19  func Fcntl(fd int, cmd int, arg int) (int, error) {
  20  	val, errno := fcntl(int32(fd), int32(cmd), int32(arg))
  21  	if val == -1 {
  22  		return int(val), syscall.Errno(errno)
  23  	}
  24  	return int(val), nil
  25  }
  26