github.com/MangoDowner/go-gm@v0.0.0-20180818020936-8baa2bd4408c/src/internal/poll/fd_posix.go (about)

     1  // Copyright 2009 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  // +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
     6  
     7  package poll
     8  
     9  import (
    10  	"io"
    11  	"syscall"
    12  )
    13  
    14  // eofError returns io.EOF when fd is available for reading end of
    15  // file.
    16  func (fd *FD) eofError(n int, err error) error {
    17  	if n == 0 && err == nil && fd.ZeroReadIsEOF {
    18  		return io.EOF
    19  	}
    20  	return err
    21  }
    22  
    23  // Fchmod wraps syscall.Fchmod.
    24  func (fd *FD) Fchmod(mode uint32) error {
    25  	if err := fd.incref(); err != nil {
    26  		return err
    27  	}
    28  	defer fd.decref()
    29  	return syscall.Fchmod(fd.Sysfd, mode)
    30  }
    31  
    32  // Fchown wraps syscall.Fchown.
    33  func (fd *FD) Fchown(uid, gid int) error {
    34  	if err := fd.incref(); err != nil {
    35  		return err
    36  	}
    37  	defer fd.decref()
    38  	return syscall.Fchown(fd.Sysfd, uid, gid)
    39  }
    40  
    41  // Ftruncate wraps syscall.Ftruncate.
    42  func (fd *FD) Ftruncate(size int64) error {
    43  	if err := fd.incref(); err != nil {
    44  		return err
    45  	}
    46  	defer fd.decref()
    47  	return syscall.Ftruncate(fd.Sysfd, size)
    48  }
    49  
    50  // Fsync wraps syscall.Fsync.
    51  func (fd *FD) Fsync() error {
    52  	if err := fd.incref(); err != nil {
    53  		return err
    54  	}
    55  	defer fd.decref()
    56  	return syscall.Fsync(fd.Sysfd)
    57  }