summaryrefslogtreecommitdiff
path: root/tests/memeater/memeater.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/memeater/memeater.c')
-rw-r--r--tests/memeater/memeater.c107
1 files changed, 0 insertions, 107 deletions
diff --git a/tests/memeater/memeater.c b/tests/memeater/memeater.c
deleted file mode 100644
index b2e0b269..00000000
--- a/tests/memeater/memeater.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Simple memory eater. Runs as a daemon. Prints the child PID to
- * std so you can easily kill it later.
- * Usage: memeater <size in MB>
- */
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-int main(int argc, char *argv[])
-{
- pid_t pid;
- int fd;
- int numMb = argc > 1 ? atoi(argv[1]) : 1;
-
- if (argc < 2) {
- printf("Usage: memeater <num MB to allocate>\n");
- exit(1);
- }
-
- switch (fork()) {
- case -1:
- perror(argv[0]);
- exit(1);
- break;
- case 0: /* child */
- chdir("/");
- umask(0);
- setpgrp();
- setsid();
- /* fork again to fully detach from controlling terminal. */
- switch (pid = fork()) {
- case -1:
- perror("failed to fork");
- break;
- case 0: /* second child */
- /* redirect to /dev/null */
- close(0);
- open("/dev/null", 0);
- for (fd = 3; fd < 256; fd++) {
- close(fd);
- }
-
- printf("Allocating %d MB\n", numMb);
- fflush(stdout);
- /* allocate memory and fill it */
- while (numMb > 0) {
- // Allocate 500MB at a time at most
- int mbToAllocate = numMb > 500 ? 500 : numMb;
- int bytesToAllocate = mbToAllocate * 1024 * 1024;
- char *p = malloc(bytesToAllocate);
- if (p == NULL) {
- printf("Failed to allocate memory\n");
- exit(1);
- }
- for (int j = 0; j < bytesToAllocate; j++) {
- p[j] = j & 0xFF;
- }
- printf("Allocated %d MB %p\n", mbToAllocate, p);
- fflush(stdout);
- numMb -= mbToAllocate;
- }
-
- close(1);
- if (open("/dev/null", O_WRONLY) < 0) {
- perror("/dev/null");
- exit(1);
- }
- close(2);
- dup(1);
-
- /* Sit around doing nothing */
- while (1) {
- usleep(1000000);
- }
- default:
- /* so caller can easily kill it later. */
- printf("%d\n", pid);
- exit(0);
- break;
- }
- break;
- default:
- exit(0);
- break;
- }
- return 0;
-}
-