Tweak outdated documentation and comments
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
9a58cc0f7f
commit
fbecca1bed
@ -147,17 +147,17 @@ Placement / Directory
|
|||||||
|
|
||||||
Find the appropriate directory for your new applet.
|
Find the appropriate directory for your new applet.
|
||||||
|
|
||||||
Add the kbuild snippet to the .c file:
|
|
||||||
|
|
||||||
//kbuild:lib-$(CONFIG_MU) += mu.o
|
|
||||||
|
|
||||||
Add the config snippet to the .c file:
|
Add the config snippet to the .c file:
|
||||||
|
|
||||||
//config:config MU
|
//config:config MU
|
||||||
//config: bool "MU"
|
//config: bool "MU"
|
||||||
//config: default y
|
//config: default y
|
||||||
//config: help
|
//config: help
|
||||||
//config: Returns an indeterminate value.
|
//config: Returns an indeterminate value.
|
||||||
|
|
||||||
|
Add the kbuild snippet to the .c file:
|
||||||
|
|
||||||
|
//kbuild:lib-$(CONFIG_MU) += mu.o
|
||||||
|
|
||||||
|
|
||||||
Usage String(s)
|
Usage String(s)
|
||||||
@ -168,8 +168,9 @@ This should look like the following:
|
|||||||
|
|
||||||
//usage:#define mu_trivial_usage
|
//usage:#define mu_trivial_usage
|
||||||
//usage: "[-abcde] FILE..."
|
//usage: "[-abcde] FILE..."
|
||||||
//usage:#define mu_full_usage
|
//usage:#define mu_full_usage "\n\n"
|
||||||
//usage: "Returns an indeterminate value\n"
|
//usage: "Returns an indeterminate value"
|
||||||
|
//usage: "\n"
|
||||||
//usage: "\n -a First function"
|
//usage: "\n -a First function"
|
||||||
//usage: "\n -b Second function"
|
//usage: "\n -b Second function"
|
||||||
//usage: ...
|
//usage: ...
|
||||||
|
@ -10,13 +10,8 @@ of reimplemented Unix commands, and we can do the same trick
|
|||||||
for speeding up busybox shells, and more. NOEXEC and NOFORK applets
|
for speeding up busybox shells, and more. NOEXEC and NOFORK applets
|
||||||
are exactly those applets which are eligible for these tricks.
|
are exactly those applets which are eligible for these tricks.
|
||||||
|
|
||||||
Applet will be subject to NOFORK/NOEXEC tricks if it is marked as such
|
Applet will be subject to NOFORK/NOEXEC tricks only if it is marked
|
||||||
in applets.h. FEATURE_PREFER_APPLETS is a config option which
|
as such in applets.src.h or in their inline "//applet:" directives.
|
||||||
globally enables usage of NOFORK/NOEXEC tricks.
|
|
||||||
If it is enabled, FEATURE_SH_STANDALONE can be enabled too,
|
|
||||||
and then shells will use NOFORK/NOEXEC tricks for ordinary commands.
|
|
||||||
NB: shell builtins use these tricks regardless of FEATURE_SH_STANDALONE
|
|
||||||
or FEATURE_PREFER_APPLETS.
|
|
||||||
|
|
||||||
In C, if you want to call a program and wait for it, use
|
In C, if you want to call a program and wait for it, use
|
||||||
spawn_and_wait(argv), BB_EXECVP(prog,argv) or BB_EXECLP(prog,argv0,...).
|
spawn_and_wait(argv), BB_EXECVP(prog,argv) or BB_EXECLP(prog,argv0,...).
|
||||||
@ -24,6 +19,31 @@ They check whether program name is an applet name and optionally
|
|||||||
do NOFORK/NOEXEC thing depending on configuration.
|
do NOFORK/NOEXEC thing depending on configuration.
|
||||||
|
|
||||||
|
|
||||||
|
Relevant CONFIG options
|
||||||
|
|
||||||
|
FEATURE_PREFER_APPLETS
|
||||||
|
Globally enables NOFORK/NOEXEC tricks for such programs as xargs
|
||||||
|
and find:
|
||||||
|
BB_EXECVP(cmd, argv) will try to exec /proc/self/exe
|
||||||
|
if command's name matches some applet name;
|
||||||
|
spawn_and_wait(argv) will do NOFORK/NOEXEC tricks
|
||||||
|
|
||||||
|
//TODO: the above two things probably should have separate options?
|
||||||
|
|
||||||
|
FEATURE_SH_STANDALONE
|
||||||
|
shells will try to exec /proc/self/exe if command's name matches
|
||||||
|
some applet name; shells will do NOEXEC trick on NOEXEC applets
|
||||||
|
|
||||||
|
//TODO: split (same as for PREFER_APPLETS)
|
||||||
|
|
||||||
|
FEATURE_SH_NOFORK
|
||||||
|
shells will do NOFORK trick on NOFORK applets
|
||||||
|
|
||||||
|
NB: shell builtins use these tricks regardless of FEATURE_SH_STANDALONE,
|
||||||
|
FEATURE_PREFER_APPLETS or FEATURE_SH_NOFORK. In effect, builtins
|
||||||
|
are "always NOFORK".
|
||||||
|
|
||||||
|
|
||||||
NOEXEC
|
NOEXEC
|
||||||
|
|
||||||
NOEXEC applet should work correctly if another applet forks and then
|
NOEXEC applet should work correctly if another applet forks and then
|
||||||
@ -121,22 +141,3 @@ option_mask32 getting trashed.
|
|||||||
It's the same trusty spawn_and_wait(argv). If FEATURE_PREFER_APPLETS=y,
|
It's the same trusty spawn_and_wait(argv). If FEATURE_PREFER_APPLETS=y,
|
||||||
it does NOEXEC trick. It resets xfunc_error_retval = 1 and
|
it does NOEXEC trick. It resets xfunc_error_retval = 1 and
|
||||||
logmode = LOGMODE_STDIO in the child.
|
logmode = LOGMODE_STDIO in the child.
|
||||||
|
|
||||||
|
|
||||||
Relevant CONFIG options
|
|
||||||
|
|
||||||
FEATURE_PREFER_APPLETS
|
|
||||||
BB_EXECVP(cmd, argv) will try to exec /proc/self/exe
|
|
||||||
if command's name matches some applet name;
|
|
||||||
spawn_and_wait(argv) will do NOFORK/NOEXEC tricks
|
|
||||||
|
|
||||||
//TODO: the above two things probably should have separate options?
|
|
||||||
|
|
||||||
FEATURE_SH_STANDALONE
|
|
||||||
shells will try to exec /proc/self/exe if command's name matches
|
|
||||||
some applet name; shells will do NOEXEC trick on NOEXEC applets
|
|
||||||
|
|
||||||
//TODO: split (same as for PREFER_APPLETS)
|
|
||||||
|
|
||||||
FEATURE_SH_NOFORK
|
|
||||||
shells will do NOFORK trick on NOFORK applets
|
|
||||||
|
@ -295,8 +295,8 @@ int arping_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
|
|
||||||
sock_fd = xsocket(AF_PACKET, SOCK_DGRAM, 0);
|
sock_fd = xsocket(AF_PACKET, SOCK_DGRAM, 0);
|
||||||
|
|
||||||
// Drop suid root privileges
|
// If you ever change BB_SUID_DROP to BB_SUID_REQUIRE,
|
||||||
// Need to remove SUID_NEVER from applets.h for this to work
|
// drop suid root privileges here:
|
||||||
//xsetuid(getuid());
|
//xsetuid(getuid());
|
||||||
|
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user