svn commit: trunk/busybox: include util-linux

vda at busybox.net vda at busybox.net
Sun May 18 23:05:34 UTC 2008


Author: vda
Date: 2008-05-18 16:05:34 -0700 (Sun, 18 May 2008)
New Revision: 22004

Log:
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



Modified:
   trunk/busybox/include/usage.h
   trunk/busybox/util-linux/Config.in
   trunk/busybox/util-linux/swaponoff.c


Changeset:
Modified: trunk/busybox/include/usage.h
===================================================================
--- trunk/busybox/include/usage.h	2008-05-18 22:28:26 UTC (rev 22003)
+++ trunk/busybox/include/usage.h	2008-05-18 23:05:34 UTC (rev 22004)
@@ -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]"

Modified: trunk/busybox/util-linux/Config.in
===================================================================
--- trunk/busybox/util-linux/Config.in	2008-05-18 22:28:26 UTC (rev 22003)
+++ trunk/busybox/util-linux/Config.in	2008-05-18 23:05:34 UTC (rev 22004)
@@ -743,6 +743,13 @@
 	  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

Modified: trunk/busybox/util-linux/swaponoff.c
===================================================================
--- trunk/busybox/util-linux/swaponoff.c	2008-05-18 22:28:26 UTC (rev 22003)
+++ trunk/busybox/util-linux/swaponoff.c	2008-05-18 23:05:34 UTC (rev 22004)
@@ -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 @@
 #endif
 
 	if (applet_name[5] == 'n')
-		status = swapon(device, 0);
+		status = swapon(device, g_flags);
 	else
 		status = swapoff(device);
 
@@ -63,15 +73,30 @@
 {
 	int ret;
 
-	if (!argv[1])
-		bb_show_usage();
+#if !ENABLE_FEATURE_SWAPON_PRI
+	ret = getopt32(argv, "a");
+#else
+	opt_complementary = "p+";
+	ret = getopt32(argv, (applet_name[5] == 'n') ? "ap:" : "a", &g_flags);
 
-	ret = getopt32(argv, "a");
-	if (ret)
+	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;
 }




More information about the busybox-cvs mailing list