[Toybox] New toys: swapon and swapoff

Rob Landley rob at landley.net
Sun Feb 19 15:33:29 PST 2012


On 02/18/2012 08:38 AM, Elie De Brauwer wrote:
> Hi all,
> 
> In attach you can find initial implementations of swapon and swapoff,
> swapon supports passing the priority, there is however no support for -a.

Cool.  Applied.

Possibly swap.h belongs in portability.h? (I don't see that one in susv4
and it strikes me as something android and macosx might not have.  If
they can't #include toys.h they can't build anything.)

Do we still need to & with the the priority mask if we're already
limiting the input range?  I think I'll take that out...  (The shift
value is 0?  Compiler will optimize that out but: dude, _what_?)

Regarding -a support, I note lib/getmountlist, which I grabbed ages and
ages ago as "a function I 100% wrote from my old mount code" in
preparation for doing a new mount implementation in toybox.

Hmmm...  except that /proc/mounts hasn't got swap in it?  Ah,
/proc/swaps.  In a slightly different format.  With a gratuitous header
line. (Oh yeah, /proc is disgusting...)

Sigh.

Anyway, swapon -a needs to parse /etc/fstab (I.E. code shared with
mount), and swapoff needs to parse /proc/swaps (code not really shared
with anything, only the first field of second and later lines is
interesting here, although you run it through the equivalent of "echo
-e" to undo the octal escapes the kernel does for embedded spaces and
newlines and backslashes and such so maybe that code's shared somehow...)

> Toybox only swapping snippet:
> edb at lapedb:~/toybox$ dd if=/dev/zero of=swapfile bs=10M count=3
> 3+0 records in
> 3+0 records out
> 31457280 bytes (31 MB) copied, 0.02503 s, 1.3 GB/s
> edb at lapedb:~/toybox$ ./toybox mkswap swapfile
> Swapspace size: 30716k
> edb at lapedb:~/toybox$ sudo ./toybox swapon swapfile
> edb at lapedb:~/toybox$ cat /proc/swaps
> Filename            Type        Size    Used Priority
> /dev/sda2                       partition    9445508    0    -1
> /home/edb/toybox/swapfile      file        30716    0    -2
> edb at lapedb:~/toybox$ sudo ./toybox swapoff swapfile
> edb at lapedb:~/toybox$ cat /proc/swaps
> Filename            Type        Size    Used Priority
> /dev/sda2                       partition    9445508    0    -1
> edb at lapedb:~/toybox$

Very nice,

Rob



More information about the Toybox mailing list