go fd_opendir_darwin 源码

  • 2022-07-15
  • 浏览 (890)

golang fd_opendir_darwin 代码

文件路径:/src/internal/poll/fd_opendir_darwin.go

// 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.

package poll

import (
	"syscall"
	_ "unsafe" // for go:linkname
)

// OpenDir returns a pointer to a DIR structure suitable for
// ReadDir. In case of an error, the name of the failed
// syscall is returned along with a syscall.Errno.
func (fd *FD) OpenDir() (uintptr, string, error) {
	// fdopendir(3) takes control of the file descriptor,
	// so use a dup.
	fd2, call, err := fd.Dup()
	if err != nil {
		return 0, call, err
	}
	var dir uintptr
	for {
		dir, err = fdopendir(fd2)
		if err != syscall.EINTR {
			break
		}
	}
	if err != nil {
		syscall.Close(fd2)
		return 0, "fdopendir", err
	}
	return dir, "", nil
}

// Implemented in syscall/syscall_darwin.go.
//
//go:linkname fdopendir syscall.fdopendir
func fdopendir(fd int) (dir uintptr, err error)

相关信息

go 源码目录

相关文章

go copy_file_range_linux 源码

go errno_unix 源码

go errno_windows 源码

go error_linux_test 源码

go error_stub_test 源码

go error_test 源码

go export_linux_test 源码

go export_posix_test 源码

go export_test 源码

go export_windows_test 源码

0  赞