[git commit] top: switch to malloced "globals".

Denys Vlasenko vda.linux at googlemail.com
Wed Aug 16 09:40:10 UTC 2017


commit: https://git.busybox.net/busybox/commit/?id=d80302db999d8cb92530333801e05652060177c4
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

This seems to be more efficient:

function                                             old     new   delta
clearmems                                              -      28     +28
display_process_list                                1001    1018     +17
read_cpu_jiffy                                       171     177      +6
do_stats                                             194     198      +4
reset_term                                            20      23      +3
topmem_sort                                           63      65      +2
mult_lvl_cmp                                          44      45      +1
get_jiffy_counts                                     247     248      +1
display_topmem_process_list                          549     546      -3
top_main                                             912     879     -33
handle_input                                         630     549     -81
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 7/3 up/down: 62/-117)           Total: -55 bytes

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 procps/top.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/procps/top.c b/procps/top.c
index 1bc432f..b9958af 100644
--- a/procps/top.c
+++ b/procps/top.c
@@ -116,7 +116,6 @@
 //kbuild:lib-$(CONFIG_TOP) += top.o
 
 #include "libbb.h"
-#include "common_bufsiz.h"
 
 
 typedef struct top_status_t {
@@ -154,6 +153,8 @@ typedef int (*cmp_funcp)(top_status_t *P, top_status_t *Q);
 
 enum { SORT_DEPTH = 3 };
 
+/* Screens wider than this are unlikely */
+enum { LINE_BUF_SIZE = 512 - 64 };
 
 struct globals {
 	top_status_t *top;
@@ -192,10 +193,9 @@ struct globals {
 #if ENABLE_FEATURE_TOP_INTERACTIVE
 	char kbd_input[KEYCODE_BUFFER_SIZE];
 #endif
-	char line_buf[80];
-}; //FIX_ALIASING; - large code growth
-enum { LINE_BUF_SIZE = COMMON_BUFSIZE - offsetof(struct globals, line_buf) };
-#define G (*(struct globals*)bb_common_bufsiz1)
+	char line_buf[LINE_BUF_SIZE];
+};
+#define G (*ptr_to_globals)
 #define top              (G.top               )
 #define ntop             (G.ntop              )
 #define sort_field       (G.sort_field        )
@@ -213,8 +213,7 @@ enum { LINE_BUF_SIZE = COMMON_BUFSIZE - offsetof(struct globals, line_buf) };
 #define total_pcpu       (G.total_pcpu        )
 #define line_buf         (G.line_buf          )
 #define INIT_G() do { \
-	setup_common_bufsiz(); \
-	BUILD_BUG_ON(sizeof(G) > COMMON_BUFSIZE); \
+	SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
 	BUILD_BUG_ON(LINE_BUF_SIZE <= 80); \
 } while (0)
 


More information about the busybox-cvs mailing list