diff --git a/cmd/podman/early_init_darwin.go b/cmd/podman/early_init_darwin.go new file mode 100644 index 0000000000..b21c23e182 --- /dev/null +++ b/cmd/podman/early_init_darwin.go @@ -0,0 +1,28 @@ +package main + +import ( + "fmt" + "os" + "syscall" +) + +func setRLimitsNoFile() error { + var rLimitNoFile syscall.Rlimit + if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimitNoFile); err != nil { + return fmt.Errorf("getting RLIMITS_NOFILE: %w", err) + } + err := syscall.Setrlimit(syscall.RLIMIT_NOFILE, &syscall.Rlimit{ + Max: rLimitNoFile.Max, + Cur: rLimitNoFile.Max, + }) + if err != nil { + return fmt.Errorf("setting new RLIMITS_NOFILE: %w", err) + } + return nil +} + +func earlyInitHook() { + if err := setRLimitsNoFile(); err != nil { + fmt.Fprintf(os.Stderr, "Failed to set RLIMITS_NOFILE: %s\n", err.Error()) + } +} diff --git a/cmd/podman/early_init_unsupported.go b/cmd/podman/early_init_unsupported.go index 55bb0906f9..2af3157b40 100644 --- a/cmd/podman/early_init_unsupported.go +++ b/cmd/podman/early_init_unsupported.go @@ -1,5 +1,5 @@ -//go:build !linux -// +build !linux +//go:build !linux && !darwin +// +build !linux,!darwin package main