Commit Graph

641 Commits

Author SHA1 Message Date
Denys Vlasenko
84d5eddb25 help text: replace [OPTIONS] with actual options (if not too long)
function                                             old     new   delta
packed_usage                                       33620   33665     +45

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 22:34:05 +01:00
Denys Vlasenko
965b795b87 decrease paddign: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly
text	   data	    bss	    dec	    hex	filename
1021988	    559	   5052	1027599	  fae0f	busybox_old
1021236	    559	   5052	1026847	  fab1f	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-30 13:03:03 +01:00
Denys Vlasenko
fc63549352 free: code shrink
function                                             old     new   delta
free_main                                            664     657      -7

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-27 12:40:31 +01:00
Denys Vlasenko
2496616b0a avoid using strok - eliminates use of hidden global variable
function                                             old     new   delta
udhcp_str2optset                                     616     650     +34
setpriv_main                                         950     975     +25
switch_root_main                                     688     706     +18
parse                                                958     970     +12
getopt_main                                          622     628      +6
parse_resolvconf                                     302     306      +4
mpstat_main                                         1139    1142      +3
static.p                                               4       -      -4
cdcmd                                                717     702     -15
strtok                                               148       -    -148
------------------------------------------------------------------------------
(add/remove: 0/3 grow/shrink: 7/1 up/down: 102/-167)          Total: -65 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-06 02:36:47 +02:00
Ron Yorston
5c69ad0ecd build system: drop PLATFORM_LINUX
PLATFORM_LINUX is a hidden configuration option which is disabled by
default and enabled at over a hundred locations for features that are
deemed to be Linux specific.

The only effect of PLATFORM_LINUX is to control compilation of
libbb/match_fstype.c.  This file is only needed by mount and umount.

Remove all references to PLATFORM_LINUX and compile match_fstype.c
if mount or umount is enabled.

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-08-13 17:12:56 +02:00
Denys Vlasenko
df1f479fc5 randomconfig fixes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-06-23 03:13:55 +02:00
Denys Vlasenko
4789c7cd81 nmeter: add %T (zero-based timestamp) format
function                                             old     new   delta
collect_tv                                             -     132    +132
collect_monotonic                                      -      61     +61
nmeter_main                                          754     778     +24
gmtime                                                 -      21     +21
init_monotonic                                         -      18     +18
init_functions                                        44      48      +4
packed_usage                                       33432   33420     -12
collect_time                                         125      19    -106
------------------------------------------------------------------------------
(add/remove: 5/0 grow/shrink: 2/2 up/down: 260/-118)          Total: 142 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-06-10 15:37:39 +02:00
Denys Vlasenko
002be6e821 sysctl: do report EACCES errors on write
function                                             old     new   delta
sysctl_act_recursive                                 165     179     +14
sysctl_act_on_setting                                467     471      +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 18/0)               Total: 18 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-06-09 15:58:32 +02:00
Denys Vlasenko
e5897d041d suppress a few "unused function" warnings
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-10-25 13:05:15 +02:00
Denys Vlasenko
ac78f2ac96 top: do not use previous colleced data wheh "h" toggles threads display
This prevents first update from showing incorrect CPU usage data

function                                             old     new   delta
handle_input                                         620     643     +23

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-08-11 16:17:11 +02:00
Denys Vlasenko
85b380f6b2 nmeter: do not clamp down %Nc to minimum of 10 (think nmeter "%nprocc")
Also, go for unsigned divisions.

function                                             old     new   delta
init_cpu                                              61      73     +12
collect_cpu                                          444     422     -22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 12/-22)            Total: -10 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-08-06 16:59:50 +02:00
James Byrne
6937487be7 libbb: reduce the overhead of single parameter bb_error_msg() calls
Back in 2007, commit 0c97c9d437 ("'simple' error message functions by
Loic Grenie") introduced bb_simple_perror_msg() to allow for a lower
overhead call to bb_perror_msg() when only a string was being printed
with no parameters. This saves space for some CPU architectures because
it avoids the overhead of a call to a variadic function. However there
has never been a simple version of bb_error_msg(), and since 2007 many
new calls to bb_perror_msg() have been added that only take a single
parameter and so could have been using bb_simple_perror_message().

This changeset introduces 'simple' versions of bb_info_msg(),
bb_error_msg(), bb_error_msg_and_die(), bb_herror_msg() and
bb_herror_msg_and_die(), and replaces all calls that only take a
single parameter, or use something like ("%s", arg), with calls to the
corresponding 'simple' version.

Since it is likely that single parameter calls to the variadic functions
may be accidentally reintroduced in the future a new debugging config
option WARN_SIMPLE_MSG has been introduced. This uses some macro magic
which will cause any such calls to generate a warning, but this is
turned off by default to avoid use of the unpleasant macros in normal
circumstances.

This is a large changeset due to the number of calls that have been
replaced. The only files that contain changes other than simple
substitution of function calls are libbb.h, libbb/herror_msg.c,
libbb/verror_msg.c and libbb/xfuncs_printf.c. In miscutils/devfsd.c,
networking/udhcp/common.h and util-linux/mdev.c additonal macros have
been added for logging so that single parameter and multiple parameter
logging variants exist.

The amount of space saved varies considerably by architecture, and was
found to be as follows (for 'defconfig' using GCC 7.4):

Arm:     -92 bytes
MIPS:    -52 bytes
PPC:   -1836 bytes
x86_64: -938 bytes

Note that for the MIPS architecture only an exception had to be made
disabling the 'simple' calls for 'udhcp' (in networking/udhcp/common.h)
because it made these files larger on MIPS.

Signed-off-by: James Byrne <james.byrne@origamienergy.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-07-02 11:35:03 +02:00
Lukas Rusak
9663bbd17b free: include SReclaimable in cached value
I noticed that the 'used' values from busybox free and
procps-ng free differed so I looked into why. It turns
out that procps-ng uses the "SReclaimable" value as
part of the cached value.

This was changed in
procps-ng commit 05d751c4f076a2f0118b914c5e51cfbb4762ad8e

function                                             old     new   delta
free_main                                            633     653     +20

Signed-off-by: Lukas Rusak <lorusak@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-06-25 18:53:10 +02:00
Denys Vlasenko
3106784e65 ps: ensure fields are separated by at least one space, closes 11826
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-05-03 09:49:56 +02:00
Thomas De Schampheleire
2b6282117f top: provide cmdline argument '-H' to enable thread scanning by default
In particular useful when you want to evaluate the threads in batch mode:
    top -Hbn1

function                                             old     new   delta
top_main                                             928     941     +13
packed_usage                                       33317   33319      +2
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 15/0)               Total: 15 bytes

Signed-off-by: Philippe Belet <philippe.belet@nokia.com>
Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-04-04 14:14:24 +02:00
Denys Vlasenko
0ddc742c04 watch: support fractional -n SEC
function                                             old     new   delta
watch_main                                           212     232     +20

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-03-12 18:56:51 +01:00
Denys Vlasenko
4a6748662a top: tweak --help
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-02-27 16:45:39 +01:00
Aaro Koskinen
c89764c063 sysctl: fix compatibility with procps sysctl
Busybox sysctl is incompatible with procps when '.' appears in
directory name, mostly happens with VLANs.

        busybox syntax (since 2008): net.ipv4.conf.eth0.100.mc_forwarding
         procps syntax (since 2002): net.ipv4.conf.eth0/100.mc_forwarding
                 (supported by both: net/ipv4/conf/eth0.100/mc_forwarding)

Use procps syntax for output; for input, allow both.

function                                             old     new   delta
sysctl_dots_to_slashes                                86     143     +57
sysctl_act_on_setting                                443     453     +10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 67/0)               Total: 67 bytes

Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-02-08 16:52:51 +01:00
Denys Vlasenko
78301861ef sysctl: do slash/dot conversions only on name, not value part
function                                             old     new   delta
sysctl_dots_to_slashes                                71      86     +15

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-02-08 16:02:39 +01:00
Denys Vlasenko
1422ba6dea sysctl: on EIO ("sysctl net.ipv6.conf.all.stable_secret") set nonzero exitcode
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-02-08 14:59:06 +01:00
Denys Vlasenko
679c30e73e sysctl: avoid stat() on every item if in -w mode
function                                             old     new   delta
sysctl_act_recursive                                 163     167      +4

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-02-08 14:27:21 +01:00
Denys Vlasenko
317498f3b3 sysctl: allow setting empty values
function                                             old     new   delta
sysctl_act_on_setting                                451     445      -6

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-02-08 14:02:59 +01:00
Denys Vlasenko
aad76968cd pmap: make 32-bit version work better on 64-bit kernels
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-31 15:18:45 +01:00
Denys Vlasenko
b097a84d62 config: update size information
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-28 03:20:17 +01:00
Denys Vlasenko
f4709d78cb free: ensure there is a least one space between numbers
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-11-27 15:43:10 +01:00
Guillermo Rodriguez
c8e3922ad8 free: add 'available' memory if provided by the kernel
Show estimated available memory if this is provided by the
kernel. See [1] for the full story.

 [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773

function                                             old     new   delta
free_main                                            537     633     +96
parse_cached_kb                                       85       -     -85
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/0 up/down: 96/-85)             Total: 11 bytes

Signed-off-by: Guillermo Rodriguez <guille.rodriguez@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-10-30 13:49:51 +01:00
Denys Vlasenko
270becc240 smemcap: keep outputting by ignoring transient processes, take two
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-30 11:49:51 +02:00
Andre Goddard Rosa
9a2621a3b9 smemcap: keep outputting by ignoring transient processes
function                                             old     new   delta
archivefile                                          167     176      +9

Signed-off-by: Andre Goddard Rosa <andre.rosa@lge.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-26 17:37:30 +02:00
Denys Vlasenko
3f2e963768 uptime: add -s support
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-03 19:53:49 +02:00
Denys Vlasenko
4c20d9f2b0 extend fractional duration support to "top -d N.N" and "timeout"
function                                             old     new   delta
parse_duration_str                                     -     168    +168
sleep_for_duration                                     -     157    +157
top_main                                             885     928     +43
timeout_main                                         269     312     +43
handle_input                                         571     614     +43
duration_suffixes                                      -      40     +40
sfx                                                   40       -     -40
sleep_main                                           364      79    -285
------------------------------------------------------------------------------
(add/remove: 4/1 grow/shrink: 3/1 up/down: 494/-325)          Total: 169 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-03 18:17:12 +02:00
Kartik Agaram
43b17b1cd0 restore documentation on the build config language
Kconfig-language.txt was deleted in commit 4fa499a17b back in 2006.
Move to docs/ as suggested by Xabier Oneca:
  http://lists.busybox.net/pipermail/busybox/2014-May/080914.html
Also update references to it everywhere.

Signed-off-by: Kartik Agaram <akkartik@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-06-06 15:16:48 +02:00
Denys Vlasenko
b3e98b1ccc top: fix "warning: unused variable new_mask"
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-03-19 20:00:10 +01:00
Denys Vlasenko
a2cae937d0 top: much faster cursor key navigation by avoiding process rescan
function                                             old     new   delta
handle_input                                         549     560     +11
top_main                                             889     891      +2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-03-07 04:47:52 +01:00
Denys Vlasenko
75e56a3db9 top: do unsigned rather than signed division in do_stats()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-03-07 04:20:22 +01:00
Denys Vlasenko
86107d6dc7 top: handle much larger VSZ values
function                                             old     new   delta
display_process_list                                1018     999     -19

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-03-07 03:59:52 +01:00
Denys Vlasenko
cb9c3894e5 *: make "argc UNUSED_PARAM" consistent
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-08 09:43:51 +01:00
Denys Vlasenko
82d1c1f84a randomconfig fixes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-12-31 17:30:02 +01:00
Denys Vlasenko
099ef9324e free: no longer include common_bufsiz.h
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-10-05 14:16:09 +02:00
Denys Vlasenko
318c8114de free: make it NOFORK
function                                             old     new   delta
parse_cached_kb                                        -      85     +85
free_main                                            580     537     -43
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 85/-43)             Total: 42 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-10-05 14:06:49 +02:00
Denys Vlasenko
0c4dbd481a regularize format of source file headers, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-09-18 16:28:43 +02:00
Denys Vlasenko
8187e01438 *: use ESC define instead of "\033"; use ESC[m instead of ESC[0m
text	   data	    bss	    dec	    hex	filename
 922535	    481	   6832	 929848	  e3038	busybox_old
 922534	    481	   6832	 929847	  e3037	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-09-13 22:48:30 +02:00
Ron Yorston
0b6ec06beb kill: add '--' option to separate options from arguments
Using a negative pid to send TERM to a process group results in an
obscure error:

   $ ./busybox kill -12345
   kill: bad signal name '12345'

This is intended. Manpage says:
ARGUMENTS
       pid    Each pid can be one of four things:
...
              -n     where n is larger than 1.  All processes in process group
                     n are signaled.  When an argument of  the  form  '-n'  is
                     given,  and it is meant to denote a process group, either
                     a signal must be specified first, or the argument must be
                     preceded  by a '--' option, otherwise it will be taken as
                     the signal to send.

However, we did not support "--". Add this capability to BusyBox.

function                                             old     new   delta
kill_main                                            993     999      +6

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-08-28 14:03:13 +02:00
Ron Yorston
0ec0fac045 ps: fix build failure if FEATURE_PS_TIME is disabled
The global seconds_since_boot is only defined if FEATURE_PS_TIME
is enabled.

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-08-22 15:39:13 +02:00
Kang-Che Sung
753c4045e4 ps: allow ps config options if minips is enabled
Follow-up of commit ab77e81a85
"klibc-utils: new applets: resume, nuke, minips"

Also put FEATURE_PS_UNUSUAL_SYSTEMS to under FEATURE_PS_TIME in the
menu.

Signed-off-by: Kang-Che Sung <explorer09@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-08-22 11:00:32 +02:00
Denys Vlasenko
ab77e81a85 klibc-utils: new applets: resume, nuke, minips
minips is a pure alias to ps, just in case someone needs 100% klibc-utils compat.
nuke is a primitive version of "rm -rf" without options and error checks. ~30 bytes.

resume is a tool for initramfs which resumes from a given block device.

function                                             old     new   delta
resume_main                                            -     582    +582
packed_usage                                       31640   31712     +72
nuke_main                                              -      28     +28
xstrtoull                                              -      24     +24
applet_names                                        2646    2665     +19
applet_main                                         1532    1544     +12
applet_suid                                           96      97      +1
applet_install_loc                                   192     193      +1
applet_flags                                          96      97      +1
------------------------------------------------------------------------------
(add/remove: 5/0 grow/shrink: 6/0 up/down: 740/0)             Total: 740 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-08-18 19:15:29 +02:00
Denys Vlasenko
e440b39416 *: stop using atexit in non-debug build: saves ~260 in bss with musl
"builtin" below is atexit's 32-element global array of functions to call.

function                                             old     new   delta
top_main                                             879     889     +10
launch_helper                                        185     193      +8
powertop_main                                       1555    1559      +4
sed_main                                             651     650      -1
slot                                                   4       -      -4
call                                                   4       -      -4
atexit                                                23       -     -23
kill_helper                                           31       -     -31
__funcs_on_exit                                      120       -    -120
__cxa_atexit                                         168       -    -168
builtin                                              260       -    -260
------------------------------------------------------------------------------
(add/remove: 0/8 grow/shrink: 3/1 up/down: 22/-611)          Total: -589 bytes
   text	   data	    bss	    dec	    hex	filename
 912364	    563	   6132	 919059	  e0613	busybox_old
 912035	    563	   5844	 918442	  e03aa	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-08-16 17:45:32 +02:00
Denys Vlasenko
d80302db99 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>
2017-08-16 11:40:10 +02:00
Denys Vlasenko
9c7c63b5c2 ps: improve TIME column for large times: showing "14453:50" is not good
function                                             old     new   delta
format_time                                            -     110    +110
func_time                                             59      50      -9
func_etime                                            67      53     -14
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/2 up/down: 110/-23)            Total: 87 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-08-10 15:02:16 +02:00
Denys Vlasenko
9a6f62fd51 ps: make it NOEXEC
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-08-10 14:15:52 +02:00
Denys Vlasenko
1fd8e66203 ps: stop using AT_CLKTCK, there are more standard ways
function                                             old     new   delta
ps_main                                              537     558     +21
func_time                                             66      59      -7
get_kernel_HZ                                        102       -    -102
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/1 up/down: 21/-109)           Total: -88 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-08-10 14:10:56 +02:00