author | Markus Bröker <mbroeker@largo.dyndns.tv> |
Thu, 16 Apr 2009 12:49:11 +0200 | |
changeset 39 | 46d7ec9d63bd |
parent 29 | 7abf6146898e |
child 48 | b94d657a9acb |
permissions | -rw-r--r-- |
/** * test/demos/mem2swap.c * Copyright (C) 2008 Markus Broeker * * mem2swpapc usage: mem2spap [<MB>] */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #define N 1000 #ifndef DEFAULT_MEGS #define DEFAULT_MEGS 64 #endif int set_limit (int); int main (int argc, char **argv) { int i, n = 0; long int *p; long int *p_new; char *args[] = { "/usr/bin/free", "-m", NULL }; int size = sizeof (*p); int megs = DEFAULT_MEGS * 1024 * 1024; if (argc == 2) megs = atoi (argv[1]) * 1024 * 1024; printf ("Mem2Swap - Version 1.0\n"); if (!set_limit (megs)) printf ("%d MB demanded ", megs / 1024 / 1024); else { printf ("\tUsage: %s [MEM]\n\n", argv[0]); printf ("Report bugs to mbroeker@largo.homelinux.org\n"); return EXIT_FAILURE; } if ((p = malloc (N * size)) == NULL) return EXIT_SUCCESS; while (1) { for (i = 0; i < N; i++) { p[n * N + i] = size * (n * N + i); } if ((p_new = realloc (p, (++n + 1) * N * size))) p = p_new; else break; } if (p) { printf ("and %ld MB allocated\n", p[n * N - 1] / 1024 / 1024); free (p); } printf ("\n\n"); execve ("/usr/bin/free", args, NULL); return EXIT_SUCCESS; }