swapon: optional -p PRIO support (by Francois Barel <frabar666 AT gmail.com>)
function old new delta swap_on_off_main 153 216 +63 packed_usage 24190 24214 +24 swap_enable_disable 127 131 +4 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 91/0) Total: 91 bytes
This commit is contained in:
parent
5599502a55
commit
ee56e013cf
@ -3809,11 +3809,14 @@
|
||||
"\n -a Stop swapping on all swap devices" \
|
||||
|
||||
#define swapon_trivial_usage \
|
||||
"[-a] [DEVICE]"
|
||||
"[-a]" USE_FEATURE_SWAPON_PRI(" [-p pri]") " [DEVICE]"
|
||||
#define swapon_full_usage "\n\n" \
|
||||
"Start swapping on DEVICE\n" \
|
||||
"\nOptions:" \
|
||||
"\n -a Start swapping on all swap devices" \
|
||||
USE_FEATURE_SWAPON_PRI( \
|
||||
"\n -p pri Set swap device priority" \
|
||||
) \
|
||||
|
||||
#define switch_root_trivial_usage \
|
||||
"[-c /dev/console] NEW_ROOT NEW_INIT [ARGUMENTS_TO_INIT]"
|
||||
|
@ -743,6 +743,13 @@ config SWAPONOFF
|
||||
space. If you are not using any swap space, you can leave this
|
||||
option disabled.
|
||||
|
||||
config FEATURE_SWAPON_PRI
|
||||
bool "Support option -p in swapon"
|
||||
default n
|
||||
depends on SWAPONOFF
|
||||
help
|
||||
Enable support for setting swap device priority in swapon.
|
||||
|
||||
config SWITCH_ROOT
|
||||
bool "switch_root"
|
||||
default n
|
||||
|
@ -11,6 +11,16 @@
|
||||
#include <mntent.h>
|
||||
#include <sys/swap.h>
|
||||
|
||||
#if ENABLE_FEATURE_SWAPON_PRI
|
||||
struct globals {
|
||||
int flags;
|
||||
};
|
||||
#define G (*(struct globals*)&bb_common_bufsiz1)
|
||||
#define g_flags (G.flags)
|
||||
#else
|
||||
#define g_flags 0
|
||||
#endif
|
||||
|
||||
static int swap_enable_disable(char *device)
|
||||
{
|
||||
int status;
|
||||
@ -26,7 +36,7 @@ static int swap_enable_disable(char *device)
|
||||
#endif
|
||||
|
||||
if (applet_name[5] == 'n')
|
||||
status = swapon(device, 0);
|
||||
status = swapon(device, g_flags);
|
||||
else
|
||||
status = swapoff(device);
|
||||
|
||||
@ -63,15 +73,30 @@ int swap_on_off_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!argv[1])
|
||||
bb_show_usage();
|
||||
|
||||
#if !ENABLE_FEATURE_SWAPON_PRI
|
||||
ret = getopt32(argv, "a");
|
||||
if (ret)
|
||||
#else
|
||||
opt_complementary = "p+";
|
||||
ret = getopt32(argv, (applet_name[5] == 'n') ? "ap:" : "a", &g_flags);
|
||||
|
||||
if (ret & 2) { // -p
|
||||
g_flags = SWAP_FLAG_PREFER |
|
||||
((g_flags & SWAP_FLAG_PRIO_MASK) << SWAP_FLAG_PRIO_SHIFT);
|
||||
ret &= 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (ret /* & 1: not needed */) // -a
|
||||
return do_em_all();
|
||||
|
||||
argv += optind;
|
||||
if (!*argv)
|
||||
bb_show_usage();
|
||||
|
||||
/* ret = 0; redundant */
|
||||
while (*++argv)
|
||||
do {
|
||||
ret += swap_enable_disable(*argv);
|
||||
} while (*++argv);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user