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