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}