Mercurial > hg > toybox
view toys/mkswap.c @ 636:42ae383499c5
Add date -r, make -u work even when /etc/localtime set, and lots of cleanup/refactoring.
author | Rob Landley <rob@landley.net> |
---|---|
date | Sat, 21 Jul 2012 18:37:26 -0500 |
parents | d51be130fda2 |
children |
line wrap: on
line source
/* vi: set sw=4 ts=4: * * mkswap.c - Format swap device. * * Copyright 2009 Rob Landley <rob@landley.net> * * Not in SUSv4. USE_MKSWAP(NEWTOY(mkswap, "<1>1", TOYFLAG_SBIN)) config MKSWAP bool "mkswap" default y help usage: mkswap DEVICE Sets up a Linux swap area on a device or file. */ #include "toys.h" void mkswap_main(void) { int fd = xopen(*toys.optargs, O_RDWR), pagesize = sysconf(_SC_PAGE_SIZE); off_t len = fdlength(fd); unsigned int pages = (len/pagesize)-1, *swap = (unsigned int *)toybuf; // Write header. Note that older kernel versions checked signature // on disk (not in cache) during swapon, so sync after writing. swap[0] = 1; swap[1] = pages; xlseek(fd, 1024, SEEK_SET); xwrite(fd, swap, 129*sizeof(unsigned int)); xlseek(fd, pagesize-10, SEEK_SET); xwrite(fd, "SWAPSPACE2", 10); fsync(fd); if (CFG_TOYBOX_FREE) close(fd); printf("Swapspace size: %luk\n", pages*(unsigned long)(pagesize/1024)); }