]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
manager: define a string constant for LONG_MAX and use that for sysctl
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 3 Dec 2022 10:55:55 +0000 (11:55 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 3 Dec 2022 10:59:03 +0000 (11:59 +0100)
This moves the formatting of the constant to compilation time and let's us
avoid asprintf() in the very hot path of initial boot.

meson.build
src/core/main.c

index 5706c776ffec96a9b4b7767e5e6e8037936c64c3..504644bca8a6c6953eac0a13ca7d716e1592eca8 100644 (file)
@@ -510,6 +510,10 @@ conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
 conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
 conf.set('SIZEOF_TIMEX_MEMBER', cc.sizeof('typeof(((struct timex *)0)->freq)', prefix : '#include <sys/timex.h>'))
 
+long_max = cc.compute_int('LONG_MAX', prefix : '#include <limits.h>')
+assert(long_max > 100000)
+conf.set_quoted('LONG_MAX_STR', '@0@'.format(long_max))
+
 decl_headers = '''
 #include <uchar.h>
 #include <sys/mount.h>
index ffe5c1688aaa9ff575aa115a9d43c2ba1f27f205..df83a1d2d422df50182f15784543e10212499c13 100644 (file)
@@ -1184,7 +1184,7 @@ static void bump_file_max_and_nr_open(void) {
 #if BUMP_PROC_SYS_FS_FILE_MAX
         /* The maximum the kernel allows for this since 5.2 is LONG_MAX, use that. (Previously things were
          * different, but the operation would fail silently.) */
-        r = sysctl_writef("fs/file-max", "%li", LONG_MAX);
+        r = sysctl_write("fs/file-max", LONG_MAX_STR);
         if (r < 0)
                 log_full_errno(IN_SET(r, -EROFS, -EPERM, -EACCES) ? LOG_DEBUG : LOG_WARNING,
                                r, "Failed to bump fs.file-max, ignoring: %m");