OSDN Git Service

Merge remote-tracking branch \\\'toybox/master\\\' into HEAD am: e7b74ae6b0 am: b6042...
[android-x86/external-toybox.git] / toys / other / swapon.c
1 /* swapon.c - Enable region for swapping
2  *
3  * Copyright 2012 Elie De Brauwer <eliedebrauwer@gmail.com>
4
5 USE_SWAPON(NEWTOY(swapon, "<1>1p#<0>32767d", TOYFLAG_SBIN|TOYFLAG_NEEDROOT))
6
7 config SWAPON
8   bool "swapon"
9   default y
10   help
11     usage: swapon [-d] [-p priority] filename
12
13     Enable swapping on a given device/file.
14
15     -d  Discard freed SSD pages
16 */
17
18 #define FOR_swapon
19 #include "toys.h"
20
21 GLOBALS(
22   long priority;
23 )
24
25 void swapon_main(void)
26 {
27   // 0x70000 = SWAP_FLAG_DISCARD|SWAP_FLAG_DISCARD_ONCE|SWAP_FLAG_DISCARD_PAGES
28   int flags = (toys.optflags&FLAG_d)*0x70000;
29
30   if (toys.optflags)
31     flags |= SWAP_FLAG_PREFER | (TT.priority << SWAP_FLAG_PRIO_SHIFT);
32
33   if (swapon(*toys.optargs, flags))
34     perror_exit("Couldn't swapon '%s'", *toys.optargs);
35 }