Mercurial > hg > toybox
annotate toys/mkswap.c @ 577:2a757e592ff7
Remove strndupa() gnu-ism at Georgi's suggestion, and adjust mdev to compile with new dirtree. (No idea if it works, this command was never finished and needs a lot more work.)
author | Rob Landley <rob@landley.net> |
---|---|
date | Wed, 09 May 2012 06:39:01 -0500 |
parents | d51be130fda2 |
children |
rev | line source |
---|---|
340 | 1 /* vi: set sw=4 ts=4: |
2 * | |
3 * mkswap.c - Format swap device. | |
4 * | |
5 * Copyright 2009 Rob Landley <rob@landley.net> | |
6 * | |
395 | 7 * Not in SUSv4. |
340 | 8 |
481
e1b9a8579ddb
mkswap helpstring and argument string
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
395
diff
changeset
|
9 USE_MKSWAP(NEWTOY(mkswap, "<1>1", TOYFLAG_SBIN)) |
340 | 10 |
11 config MKSWAP | |
12 bool "mkswap" | |
13 default y | |
14 help | |
15 usage: mkswap DEVICE | |
16 | |
481
e1b9a8579ddb
mkswap helpstring and argument string
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
395
diff
changeset
|
17 Sets up a Linux swap area on a device or file. |
340 | 18 */ |
19 | |
20 #include "toys.h" | |
21 | |
22 void mkswap_main(void) | |
23 { | |
535
d51be130fda2
More stabs at getting #includes right, and moving off of deprecated functions.
Rob Landley <rob@landley.net>
parents:
481
diff
changeset
|
24 int fd = xopen(*toys.optargs, O_RDWR), pagesize = sysconf(_SC_PAGE_SIZE); |
340 | 25 off_t len = fdlength(fd); |
26 unsigned int pages = (len/pagesize)-1, *swap = (unsigned int *)toybuf; | |
27 | |
28 // Write header. Note that older kernel versions checked signature | |
29 // on disk (not in cache) during swapon, so sync after writing. | |
30 | |
31 swap[0] = 1; | |
32 swap[1] = pages; | |
33 xlseek(fd, 1024, SEEK_SET); | |
34 xwrite(fd, swap, 129*sizeof(unsigned int)); | |
35 xlseek(fd, pagesize-10, SEEK_SET); | |
36 xwrite(fd, "SWAPSPACE2", 10); | |
37 fsync(fd); | |
38 | |
39 if (CFG_TOYBOX_FREE) close(fd); | |
40 | |
41 printf("Swapspace size: %luk\n", pages*(unsigned long)(pagesize/1024)); | |
42 } |