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" \
|
"\n -a Stop swapping on all swap devices" \
|
||||||
|
|
||||||
#define swapon_trivial_usage \
|
#define swapon_trivial_usage \
|
||||||
"[-a] [DEVICE]"
|
"[-a]" USE_FEATURE_SWAPON_PRI(" [-p pri]") " [DEVICE]"
|
||||||
#define swapon_full_usage "\n\n" \
|
#define swapon_full_usage "\n\n" \
|
||||||
"Start swapping on DEVICE\n" \
|
"Start swapping on DEVICE\n" \
|
||||||
"\nOptions:" \
|
"\nOptions:" \
|
||||||
"\n -a Start swapping on all swap devices" \
|
"\n -a Start swapping on all swap devices" \
|
||||||
|
USE_FEATURE_SWAPON_PRI( \
|
||||||
|
"\n -p pri Set swap device priority" \
|
||||||
|
) \
|
||||||
|
|
||||||
#define switch_root_trivial_usage \
|
#define switch_root_trivial_usage \
|
||||||
"[-c /dev/console] NEW_ROOT NEW_INIT [ARGUMENTS_TO_INIT]"
|
"[-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
|
space. If you are not using any swap space, you can leave this
|
||||||
option disabled.
|
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
|
config SWITCH_ROOT
|
||||||
bool "switch_root"
|
bool "switch_root"
|
||||||
default n
|
default n
|
||||||
|
@ -11,6 +11,16 @@
|
|||||||
#include <mntent.h>
|
#include <mntent.h>
|
||||||
#include <sys/swap.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)
|
static int swap_enable_disable(char *device)
|
||||||
{
|
{
|
||||||
int status;
|
int status;
|
||||||
@ -26,7 +36,7 @@ static int swap_enable_disable(char *device)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (applet_name[5] == 'n')
|
if (applet_name[5] == 'n')
|
||||||
status = swapon(device, 0);
|
status = swapon(device, g_flags);
|
||||||
else
|
else
|
||||||
status = swapoff(device);
|
status = swapoff(device);
|
||||||
|
|
||||||
@ -63,15 +73,30 @@ int swap_on_off_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!argv[1])
|
#if !ENABLE_FEATURE_SWAPON_PRI
|
||||||
bb_show_usage();
|
|
||||||
|
|
||||||
ret = getopt32(argv, "a");
|
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();
|
return do_em_all();
|
||||||
|
|
||||||
|
argv += optind;
|
||||||
|
if (!*argv)
|
||||||
|
bb_show_usage();
|
||||||
|
|
||||||
/* ret = 0; redundant */
|
/* ret = 0; redundant */
|
||||||
while (*++argv)
|
do {
|
||||||
ret += swap_enable_disable(*argv);
|
ret += swap_enable_disable(*argv);
|
||||||
|
} while (*++argv);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user