os-posix.c | 4 ++++ 1 file changed, 4 insertions(+)
Darwin uses a subtly different version of the setrlimit() syscall as
described in the COMPATIBILITY section of the macOS man page. The value
of the rlim_cur member has been adjusted accordingly for Darwin-based
systems.
Signed-off-by: Trent Huber <trentmhuber@gmail.com>
---
The previous version assumed OPEN_MAX was a constant defined on all
POSIX systems--turns out it's only a macOS constant. This version adds
preprocessing conditionals to maintain compatibility with Linux.
os-posix.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/os-posix.c b/os-posix.c
index a4284e2c07..43f9a43f3f 100644
--- a/os-posix.c
+++ b/os-posix.c
@@ -270,7 +270,11 @@ void os_setup_limits(void)
return;
}
+#ifdef CONFIG_DARWIN
+ nofile.rlim_cur = OPEN_MAX < nofile.rlim_max ? OPEN_MAX : nofile.rlim_max;
+#else
nofile.rlim_cur = nofile.rlim_max;
+#endif
if (setrlimit(RLIMIT_NOFILE, &nofile) < 0) {
warn_report("unable to set NOFILE limit: %s", strerror(errno));
--
2.24.3 (Apple Git-128)
On Fri, Jun 14, 2024 at 05:06:38PM -0400, Trent Huber wrote: > Darwin uses a subtly different version of the setrlimit() syscall as > described in the COMPATIBILITY section of the macOS man page. The value > of the rlim_cur member has been adjusted accordingly for Darwin-based > systems. > > Signed-off-by: Trent Huber <trentmhuber@gmail.com> > --- > The previous version assumed OPEN_MAX was a constant defined on all > POSIX systems--turns out it's only a macOS constant. This version adds > preprocessing conditionals to maintain compatibility with Linux. > > os-posix.c | 4 ++++ > 1 file changed, 4 insertions(+)> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
Hi Trent,
On 14/6/24 23:06, Trent Huber wrote:
> Darwin uses a subtly different version of the setrlimit() syscall as
> described in the COMPATIBILITY section of the macOS man page. The value
> of the rlim_cur member has been adjusted accordingly for Darwin-based
> systems.
>
> Signed-off-by: Trent Huber <trentmhuber@gmail.com>
> ---
> The previous version assumed OPEN_MAX was a constant defined on all
> POSIX systems--turns out it's only a macOS constant. This version adds
> preprocessing conditionals to maintain compatibility with Linux.
>
> os-posix.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/os-posix.c b/os-posix.c
> index a4284e2c07..43f9a43f3f 100644
> --- a/os-posix.c
> +++ b/os-posix.c
> @@ -270,7 +270,11 @@ void os_setup_limits(void)
> return;
> }
>
> +#ifdef CONFIG_DARWIN
> + nofile.rlim_cur = OPEN_MAX < nofile.rlim_max ? OPEN_MAX : nofile.rlim_max;
Why open-code min()? (The man-page also suggests it).
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> +#else
> nofile.rlim_cur = nofile.rlim_max;
> +#endif
>
> if (setrlimit(RLIMIT_NOFILE, &nofile) < 0) {
> warn_report("unable to set NOFILE limit: %s", strerror(errno));
17.06.2024 10:19, Philippe Mathieu-Daudé wrote: > Hi Trent, > > On 14/6/24 23:06, Trent Huber wrote: >> Darwin uses a subtly different version of the setrlimit() syscall as >> described in the COMPATIBILITY section of the macOS man page. The value >> of the rlim_cur member has been adjusted accordingly for Darwin-based >> systems. >> >> Signed-off-by: Trent Huber <trentmhuber@gmail.com> >> --- >> The previous version assumed OPEN_MAX was a constant defined on all >> POSIX systems--turns out it's only a macOS constant. This version adds >> preprocessing conditionals to maintain compatibility with Linux. >> >> os-posix.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/os-posix.c b/os-posix.c >> index a4284e2c07..43f9a43f3f 100644 >> --- a/os-posix.c >> +++ b/os-posix.c >> @@ -270,7 +270,11 @@ void os_setup_limits(void) >> return; >> } >> +#ifdef CONFIG_DARWIN >> + nofile.rlim_cur = OPEN_MAX < nofile.rlim_max ? OPEN_MAX : nofile.rlim_max; > > Why open-code min()? (The man-page also suggests it). I guess it's because stddef.h isn't included there, so min() isn't immediately available :) Applied to trivial-patches, /mjt -- GPG Key transition (from rsa2048 to rsa4096) since 2024-04-24. New key: rsa4096/61AD3D98ECDF2C8E 9D8B E14E 3F2A 9DD7 9199 28F1 61AD 3D98 ECDF 2C8E Old key: rsa2048/457CE0A0804465C5 6EE1 95D1 886E 8FFB 810D 4324 457C E0A0 8044 65C5 Transition statement: http://www.corpit.ru/mjt/gpg-transition-2024.txt
On 17/6/24 15:07, Michael Tokarev wrote: > 17.06.2024 10:19, Philippe Mathieu-Daudé wrote: >> Hi Trent, >> >> On 14/6/24 23:06, Trent Huber wrote: >>> Darwin uses a subtly different version of the setrlimit() syscall as >>> described in the COMPATIBILITY section of the macOS man page. The value >>> of the rlim_cur member has been adjusted accordingly for Darwin-based >>> systems. >>> >>> Signed-off-by: Trent Huber <trentmhuber@gmail.com> >>> --- >>> The previous version assumed OPEN_MAX was a constant defined on all >>> POSIX systems--turns out it's only a macOS constant. This version adds >>> preprocessing conditionals to maintain compatibility with Linux. >>> >>> os-posix.c | 4 ++++ >>> 1 file changed, 4 insertions(+) >>> >>> diff --git a/os-posix.c b/os-posix.c >>> index a4284e2c07..43f9a43f3f 100644 >>> --- a/os-posix.c >>> +++ b/os-posix.c >>> @@ -270,7 +270,11 @@ void os_setup_limits(void) >>> return; >>> } >>> +#ifdef CONFIG_DARWIN >>> + nofile.rlim_cur = OPEN_MAX < nofile.rlim_max ? OPEN_MAX : >>> nofile.rlim_max; >> >> Why open-code min()? (The man-page also suggests it). > > I guess it's because stddef.h isn't included there, so min() isn't > immediately > available :) I see os-posix.c -> "qemu/osdep.h" -> <stddef.h>. Anyway, Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> > Applied to trivial-patches, Thanks!
On 6/17/24 08:15, Philippe Mathieu-Daudé wrote: > On 17/6/24 15:07, Michael Tokarev wrote: >> 17.06.2024 10:19, Philippe Mathieu-Daudé wrote: >>> Hi Trent, >>> >>> On 14/6/24 23:06, Trent Huber wrote: >>>> Darwin uses a subtly different version of the setrlimit() syscall as >>>> described in the COMPATIBILITY section of the macOS man page. The value >>>> of the rlim_cur member has been adjusted accordingly for Darwin-based >>>> systems. >>>> >>>> Signed-off-by: Trent Huber <trentmhuber@gmail.com> >>>> --- >>>> The previous version assumed OPEN_MAX was a constant defined on all >>>> POSIX systems--turns out it's only a macOS constant. This version adds >>>> preprocessing conditionals to maintain compatibility with Linux. >>>> >>>> os-posix.c | 4 ++++ >>>> 1 file changed, 4 insertions(+) >>>> >>>> diff --git a/os-posix.c b/os-posix.c >>>> index a4284e2c07..43f9a43f3f 100644 >>>> --- a/os-posix.c >>>> +++ b/os-posix.c >>>> @@ -270,7 +270,11 @@ void os_setup_limits(void) >>>> return; >>>> } >>>> +#ifdef CONFIG_DARWIN >>>> + nofile.rlim_cur = OPEN_MAX < nofile.rlim_max ? OPEN_MAX : nofile.rlim_max; >>> >>> Why open-code min()? (The man-page also suggests it). >> >> I guess it's because stddef.h isn't included there, so min() isn't immediately >> available :) > > I see os-posix.c -> "qemu/osdep.h" -> <stddef.h>. Anyway, We also have MIN in osdep.h. r~
© 2016 - 2025 Red Hat, Inc.