]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: debug: use LIM2A to show limits
authorValentine Krasnobaeva <vkrasnobaeva@haproxy.com>
Fri, 12 Jul 2024 15:55:15 +0000 (17:55 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 16 Jul 2024 12:04:41 +0000 (14:04 +0200)
It is more handy to use LIM2A in debug_parse_cli_show_dev(), as it allows to
show a custom string ("unlimited"), if a given limit value equals to 0.

normalize_rlim() handler is needed to convert properly RLIM_INFINITY to zero,
with the respect of type sizes, as rlim_t is always 4 bytes on 32bit and
64bit arch.

include/haproxy/limits.h
src/debug.c
src/limits.c

index 51e03e66a39a145592b06493eb99b6d499ba68dd..0b1e844018edee3d2d999a8d76fea8800a6a2c12 100644 (file)
@@ -8,10 +8,23 @@
 #ifndef _HAPROXY_LIMITS_H
 #define _HAPROXY_LIMITS_H
 #include <sys/resource.h>
+#include <haproxy/compat.h>
 
 extern unsigned int rlim_fd_cur_at_boot;
 extern unsigned int rlim_fd_max_at_boot;
 
+/* returns 0 if the given limit was not set (reported as infinity), otherwise
+ * returns the limit, useful to print limit values as strings in err messages
+ * via LIM2A macros.
+ */
+static inline ulong normalize_rlim(ulong rlim)
+{
+       if (rlim == RLIM_INFINITY)
+               return 0;
+
+       return rlim;
+}
+
 /* handlers to compute internal process limits, if they are not provided via
  * cmd line or via configuration file.
 */
index 4526d6040252ccf8a042a330a8730b22d5900213..79ace2ae34c2b5837db3251898c79ee3d83a53f7 100644 (file)
@@ -38,6 +38,7 @@
 #include <haproxy/global.h>
 #include <haproxy/hlua.h>
 #include <haproxy/http_ana.h>
+#include <haproxy/limits.h>
 #if defined(USE_LINUX_CAP)
 #include <haproxy/linuxcap.h>
 #endif
@@ -605,14 +606,14 @@ static int debug_parse_cli_show_dev(char **args, char *payload, struct appctx *a
                chunk_appendf(&trash, "  capget() failed at runtime with: %s.\n",
                              strerror(post_mortem.process.caps.err_run));
 #endif
-       if ((ulong)post_mortem.process.limit_fd.rlim_cur != RLIM_INFINITY)
-               chunk_appendf(&trash, "  fd limit (soft): %lu\n", (ulong)post_mortem.process.limit_fd.rlim_cur);
-       if ((ulong)post_mortem.process.limit_fd.rlim_max != RLIM_INFINITY)
-               chunk_appendf(&trash, "  fd limit (hard): %lu\n", (ulong)post_mortem.process.limit_fd.rlim_max);
-       if ((ulong)post_mortem.process.limit_ram.rlim_cur != RLIM_INFINITY)
-               chunk_appendf(&trash, "  ram limit (soft): %lu\n", (ulong)post_mortem.process.limit_ram.rlim_cur);
-       if ((ulong)post_mortem.process.limit_ram.rlim_max != RLIM_INFINITY)
-               chunk_appendf(&trash, "  ram limit (hard): %lu\n", (ulong)post_mortem.process.limit_ram.rlim_max);
+       chunk_appendf(&trash, "  fd limit (soft): %s\n",
+                     LIM2A(normalize_rlim((ulong)post_mortem.process.limit_fd.rlim_cur), "unlimited"));
+       chunk_appendf(&trash, "  fd limit (hard): %s\n",
+                     LIM2A(normalize_rlim((ulong)post_mortem.process.limit_fd.rlim_max), "unlimited"));
+       chunk_appendf(&trash, "  ram limit (soft): %s\n",
+                     LIM2A(normalize_rlim((ulong)post_mortem.process.limit_ram.rlim_cur), "unlimited"));
+       chunk_appendf(&trash, "  ram limit (hard): %s\n",
+                     LIM2A(normalize_rlim((ulong)post_mortem.process.limit_ram.rlim_max), "unlimited"));
 
        return cli_msg(appctx, LOG_INFO, trash.area);
 }
index c5b4820c64f6b5686c57e63cd5477f18d5435c11..bb74510601311ad99475e9aa5f6ff1ab2dcf9c24 100644 (file)
@@ -5,7 +5,6 @@
  *
  */
 
-#include <haproxy/compat.h>
 #include <haproxy/global.h>
 #include <haproxy/limits.h>
 #include <haproxy/proxy.h>