summaryrefslogtreecommitdiffhomepage
path: root/include/busybox.h
AgeCommit message (Collapse)Author
2016-03-30applet_tables: save space by removing applet name offsetsRon Yorston
The array applet_nameofs consumes two bytes per applet. It encodes nofork/noexec flags suid flags the offset of the applet name in the applet_name string Change the applet_table build tool to store the flags in two separate arrays (applet_flags and applet_suid). Replace applet_nameofs[] with a smaller version that only stores a limited number of offsets. This requires changes to the macros APPLET_IS_NOFORK, APPLET_IS_NOEXEC and APPLET_SUID. According to Valgrind the original find_applet_by_name required 353 cycles per call, averaged over all names. Adjusting the number of known offsets allows space to be traded off against execution time: KNOWN_OFFSETS cycles bytes (wrt KNOWN_OFFSETS = 0) 0 9057 - 2 4604 32 4 2407 75 8 1342 98 16 908 130 32 884 194 This patch uses KNOWN_OFFSETS = 8. v2: Remove some dead code from the applet_table tool; Treat the applet in the middle of the table as a special case. v3: Use the middle applet to adjust the start of the linear search as well as the last applet found. v4: Use an augmented linear search in find_applet_by_name. Drop the special treatment of the middle name from get_applet_name: most of the advantage now derives from the last stored value. v5: Don't store index in applet_nameofs, it can be calculated. v6: Tweaks by Denys function old new delta find_applet_by_name 25 125 +100 applet_suid - 92 +92 run_applet_no_and_exit 452 460 +8 run_applet_and_exit 695 697 +2 applet_name_compare 31 - -31 applet_nameofs 734 14 -720 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 3/1 up/down: 202/-751) Total: -549 bytes text data bss dec hex filename 925464 906 17160 943530 e65aa busybox_old 924915 906 17160 942981 e6385 busybox_unstripped Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2012-07-24*: declare strings with ALIGN1, as appropriateMichael Tokarev
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2011-03-28applet_tables: do not include libbb.h, that header ir for target buildsDenys Vlasenko
...and applets/applet_tables.c is built on *host*. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2011-01-18mass removal of underscores from _BB_DIR_foo and _BB_SUID_fooDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-10-12tweaks to build system, mainly making menuconfig text and order clearerDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-08-16*: make GNU licensing statement forms more regularDenys Vlasenko
This change retains "or later" state! No licensing _changes_ here, only form is adjusted (article, space between "GPL" and "v2" and so on). Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-07-15hush: fix faloout from previous commitDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-07-30rename _BB_SUID_ALWAYS and NEVER into REQUIRE and DROP. No code changes.Denys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-04-09*: make "pragma GCC visibility push(hidden)" less uglyDenis Vlasenko
2008-05-09Use intra-DSO calls when we build libbusybox. No-op for normal build.Denis Vlasenko
This was Bernhard Fischer' idea. text data bss dec hex filename 773549 7781 9740 791070 c121e busybox.t7/0_lib/libbusybox.so.1.11.0.svn_unstripped 769683 7397 9740 786820 c0184 busybox.t9t/0_lib/libbusybox.so.1.11.0.svn_unstripped
2008-04-01shells: do not frocibly enable test, echo and kill _applets_,Denis Vlasenko
just build relevant source and use xxx_main functions. build system: add a special case when we have exactly one applet enabled (makes "true", "false", "basename" REALLY tiny). getopt32: do not use stdio. function old new delta getopt32 1385 1412 +27 make_device 1187 1200 +13 basename_main 120 127 +7 tcpudpsvd_main 1922 1926 +4 testcmd 5 - -5 echocmd 5 - -5 fuser_main 1243 1231 -12 ------------------------------------------------------------------------------ (add/remove: 0/2 grow/shrink: 4/1 up/down: 51/-22) Total: 29 bytes
2008-03-17*: fix fallout from -Wunused-parameterDenis Vlasenko
function old new delta bbunpack 358 366 +8 passwd_main 1070 1072 +2 handle_incoming_and_exit 2651 2653 +2 getpty 88 86 -2 script_main 975 972 -3 inetd_main 2036 2033 -3 dname_enc 377 373 -4 make_new_session 474 462 -12 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/5 up/down: 12/-24) Total: -12 bytes text data bss dec hex filename 797429 658 7428 805515 c4a8b busybox_old 797417 658 7428 805503 c4a7f busybox_unstripped
2008-03-17*: add -Wunused-parameter; fix resulting breakageDenis Vlasenko
function old new delta procps_scan 1265 1298 +33 aliascmd 278 283 +5 parse_file_cmd 116 120 +4 dname_enc 373 377 +4 setcmd 90 93 +3 execcmd 57 60 +3 count_lines 72 74 +2 process_command_subs 340 339 -1 test_main 409 407 -2 mknod_main 179 177 -2 handle_incoming_and_exit 2653 2651 -2 argstr 1312 1310 -2 shiftcmd 131 128 -3 exitcmd 46 43 -3 dotcmd 297 294 -3 breakcmd 86 83 -3 evalpipe 353 349 -4 evalcommand 1180 1176 -4 evalcmd 109 105 -4 send_tree 374 369 -5 mkfifo_main 82 77 -5 evalsubshell 152 147 -5 typecmd 75 69 -6 letcmd 61 55 -6 add_cmd 1190 1183 -7 main 891 883 -8 ash_main 1415 1407 -8 parse_stream 1377 1367 -10 alloc_procps_scan 55 - -55 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 7/21 up/down: 54/-148) Total: -94 bytes text data bss dec hex filename 797195 658 7428 805281 c49a1 busybox_old 797101 658 7428 805187 c4943 busybox_unstripped
2007-11-29Further optimize applet tables; prettify build outputDenis Vlasenko
text data bss dec hex filename 775923 929 9100 785952 bfe20 busybox_old 775565 929 9100 785594 bfcba busybox_unstripped
2007-11-28reorganize applet table. Eliminates pointers to names.Denis Vlasenko
Should be a big win for libbusybox. busybox wins too: text data bss dec hex filename 776524 929 9100 786553 c0079 busybox_old 775903 929 9100 785932 bfe0c busybox_unstripped
2007-10-11fix a problem with two different applet_name'sDenis Vlasenko
2007-10-11add -fvisibility=hidden to CC flags, mark XXX_main functionsDenis Vlasenko
EXTERNALLY_VISIBLE. 5% size reduction of libbusybox.so
2007-10-10Move applets/applet.c into libbb, allows to get rid of --whole-archiveDenis Vlasenko
(smaller code). Tested in static and shared mode.
2007-10-07make --help work for "individual applets" too.Denis Vlasenko
2007-10-07libbusybox: move (possibly compressed) help stuff into libbusybox.Denis Vlasenko
Makes individual binaries much smaller.
2007-04-11fix typo in commentDenis Vlasenko
2007-04-10Rename two config options:Denis Vlasenko
FEATURE_SH_STANDALONE_SHELL => FEATURE_SH_STANDALONE FEATURE_EXEC_PREFER_APPLETS => FEATURE_PREFER_APPLETS Make SH_STANDALONE depend on PREFER_APPLETS. getopt.c: more randomconfig-induced fixes
2007-04-10make a few struct bb_applet members conditionalDenis Vlasenko
rename sllep_and_die -> xfunc_die make fflush_stdout_and_exit NOFORK-safe fix some buglets found by randomconfig
2007-04-09Improve STANDALONE_SHELL. "safe" applets are renamed NOEXEC appletsDenis Vlasenko
and now this fact is recorded in applets.h, not ash.c. Several fixes to "--help + STANDALONE_SHELL" scenarios. function old new delta run_current_applet_and_exit - 355 +355 arith 2064 2073 +9 refresh 1148 1156 +8 getopt32 1068 1073 +5 telnet_main 1510 1514 +4 md5_sha1_sum_main 565 566 +1 xstrtoul_range_sfx 255 251 -4 packed_usage 22523 22514 -9 tryexec 255 203 -52 static.safe_applets 152 - -152 .rodata 131320 131128 -192 run_applet_by_name 869 506 -363 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 5/5 up/down: 382/-772) Total: -390 bytes ./busybox ash -c 'i=20000; while test $i != 0; do touch z; i=$((i-1)); done' runs more than twice as fast with STANDALONE_SHELL versus without.
2007-04-09merge busybox.c into applets.cDenis Vlasenko
2007-02-03do not put all <applet>_main() declarationsDenis Vlasenko
in busybox.h - this produces false dependencies
2006-12-24Cleanup usage messages (-200 bytes).Denis Vlasenko
Remove busybox_main from applet table since it is called via separate check
2006-12-24random tiny size savingsDenis Vlasenko
2006-10-05build system overhaulDenis Vlasenko
2006-06-09add ordering warning on enum LocationPaul Fox
2006-05-31Header file cleanup. platform.h apparently needs to be included early on so itRob Landley
can figure out what header files to include, and override stuff that comes later. But applets shouldn't include platform.h directly, they should include busybox.h or libbb.h. Since busybox.h already includes libbb.h, move libbb.h to the top of busybox.h and platform.h near the top of libbb.h (right after bbconfig.h, which is something platform.h also needs access to). While we're at it, move some stuff from busybox.h to libbb.h so we have one big file to audit/clean up/try to make sense of instead of many.
2006-05-26- move libc checks from busybox.h to platform.hBernhard Reutner-Fischer
- add ATTRIBUTE_ALWAYS_INLINE, endian handling for DEC UNIX, some more compiler dependent defines to platform.h - add conditional bb_setpgrp define to platform.h - remove superfluous specifying args from "#define fdprintf dprintf"
2006-04-03- move buffer allocation schemes to libbb.hBernhard Reutner-Fischer
- include the correct headers: applets need busybox.h while lib* need libbb.h
2006-02-16moved BB_BANNER to applets/version.c file: make kernel like version, "Vladimir N. Oleynik"
removed depend loop: busybox.h depend with BB_BT, and all sources depend with busybox.h
2006-01-22- add platform.h.Bernhard Reutner-Fischer
- use shorter boilerplate while at it.
2005-09-29reorder include <sys/types.h> and <sys/types.h>."Vladimir N. Oleynik"
2005-09-21- make sure to include dmalloc.h at the very end of busybox.h or libbb.h.Bernhard Reutner-Fischer
2005-07-27#ifdef reduction infrastructure, based on an argument between Shaun Jackman,Rob Landley
Rob Landley, and others. Currently CONFIG options are defined or undefined, so we chop out code with #ifdefs, ala: #ifdef CONFIG_THING stuff(); #endif This creates a new header file, bb_config.h, which sets the CONFIG entry to 1 or 0, and lets us do: if(CONFIG_THING) stuff(); And let the compiler do dead code elimination to get rid of it. (Note: #ifdef will still work because for the 1 case it's a static const int, not a #define.)
2005-03-04newlib fixe from Shaun JackmanMike Frysinger
2004-03-15Remove trailing whitespace. Update copyright to include 2004.Eric Andersen
2004-02-05Make sure stdlib.h is always included before dmalloc.h to avoid problemsManuel Novoa III
parsing problems.
2004-01-13Patch from Bastian Blank, allow the buildtime to be overriden with aGlenn L McGrath
different string, used by the debian busybox-cvs to specify the debian date based version number.
2003-07-22Remove remaining libc5 support codeEric Andersen
2003-02-08Patch from mathuria, compatability with solarisGlenn L McGrath
2002-08-22Remove unwanted comments, run through indentGlenn L McGrath
2002-06-04Implement two types of suid/sgid support for BusyBox:Robert Griebl
1) tinylogin like with compile time selection and a chown root.root 2) Runtime configurable via /etc/busybox.conf (docu is in the works) [Parts of this patch may overlap with my other two patches]
2002-03-16Try to pull in PATH_MAX properlyEric Andersen
2002-01-26If PATH_MAX isn't defined, define it outselvesEric Andersen
2001-10-24Major rework of the directory structure and the entire build system.Eric Andersen
-Erik
2001-07-19Add a RELEASE_BB_BUFFER macro and use it to fix a memory leak in syslogd.cMatt Kraai
(noted by Adam Slattery).