top: switch to malloced "globals".
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@googlemail.com>
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 @@
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 @@
#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 @@
#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)