freebsd.go

 1//go:build freebsd
 2
 3package internal
 4
 5import (
 6	"syscall"
 7
 8	"golang.org/x/sys/unix"
 9)
10
11var (
12	SyscallEACCES = syscall.EACCES
13	UnixEACCES    = unix.EACCES
14)
15
16var maxfiles uint64
17
18func SetRlimit() {
19	// Go 1.19 will do this automatically: https://go-review.googlesource.com/c/go/+/393354/
20	var l syscall.Rlimit
21	err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &l)
22	if err == nil && l.Cur != l.Max {
23		l.Cur = l.Max
24		syscall.Setrlimit(syscall.RLIMIT_NOFILE, &l)
25	}
26	maxfiles = uint64(l.Cur)
27}
28
29func Maxfiles() uint64                              { return maxfiles }
30func Mkfifo(path string, mode uint32) error         { return unix.Mkfifo(path, mode) }
31func Mknod(path string, mode uint32, dev int) error { return unix.Mknod(path, mode, uint64(dev)) }