Mercurial > hg > toybox
annotate toys/other/mkswap.c @ 684:4d9fa8b8a300
Use stridx.
author | Rob Landley <rob@landley.net> |
---|---|
date | Fri, 02 Nov 2012 09:50:09 -0500 |
parents | 6df4ccc0acbe |
children | 786841fdb1e0 |
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 | |
481
e1b9a8579ddb
mkswap helpstring and argument string
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
395
diff
changeset
|
7 USE_MKSWAP(NEWTOY(mkswap, "<1>1", TOYFLAG_SBIN)) |
340 | 8 |
9 config MKSWAP | |
10 bool "mkswap" | |
11 default y | |
12 help | |
13 usage: mkswap DEVICE | |
14 | |
481
e1b9a8579ddb
mkswap helpstring and argument string
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
395
diff
changeset
|
15 Sets up a Linux swap area on a device or file. |
340 | 16 */ |
17 | |
18 #include "toys.h" | |
19 | |
20 void mkswap_main(void) | |
21 { | |
535
d51be130fda2
More stabs at getting #includes right, and moving off of deprecated functions.
Rob Landley <rob@landley.net>
parents:
481
diff
changeset
|
22 int fd = xopen(*toys.optargs, O_RDWR), pagesize = sysconf(_SC_PAGE_SIZE); |
340 | 23 off_t len = fdlength(fd); |
24 unsigned int pages = (len/pagesize)-1, *swap = (unsigned int *)toybuf; | |
25 | |
26 // Write header. Note that older kernel versions checked signature | |
27 // on disk (not in cache) during swapon, so sync after writing. | |
28 | |
29 swap[0] = 1; | |
30 swap[1] = pages; | |
31 xlseek(fd, 1024, SEEK_SET); | |
32 xwrite(fd, swap, 129*sizeof(unsigned int)); | |
33 xlseek(fd, pagesize-10, SEEK_SET); | |
34 xwrite(fd, "SWAPSPACE2", 10); | |
35 fsync(fd); | |
36 | |
37 if (CFG_TOYBOX_FREE) close(fd); | |
38 | |
39 printf("Swapspace size: %luk\n", pages*(unsigned long)(pagesize/1024)); | |
40 } |