1//go:build darwin
 2
 3package watcher
 4
 5import "syscall"
 6
 7func Ulimit() (uint64, error) {
 8	var rLimit syscall.Rlimit
 9	err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
10	if err != nil {
11		return 0, err
12	}
13	currentLimit := rLimit.Cur
14	rLimit.Cur = rLimit.Max / 10 * 8
15	err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
16	if err != nil {
17		return currentLimit, err
18	}
19	err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
20	if err != nil {
21		return currentLimit, err
22	}
23	return rLimit.Cur, nil
24}