1*cf5a6c84SAndroid Build Coastguard Worker /* memeater.c - consume the specified amount of memory 2*cf5a6c84SAndroid Build Coastguard Worker * 3*cf5a6c84SAndroid Build Coastguard Worker * Copyright 2024 The Android Open Source Project 4*cf5a6c84SAndroid Build Coastguard Worker 5*cf5a6c84SAndroid Build Coastguard Worker USE_MEMEATER(NEWTOY(memeater, "<1>1M", TOYFLAG_USR|TOYFLAG_BIN)) 6*cf5a6c84SAndroid Build Coastguard Worker 7*cf5a6c84SAndroid Build Coastguard Worker config MEMEATER 8*cf5a6c84SAndroid Build Coastguard Worker bool "memeater" 9*cf5a6c84SAndroid Build Coastguard Worker default y 10*cf5a6c84SAndroid Build Coastguard Worker help 11*cf5a6c84SAndroid Build Coastguard Worker usage: memeater [-M] BYTES 12*cf5a6c84SAndroid Build Coastguard Worker 13*cf5a6c84SAndroid Build Coastguard Worker Consume the specified amount of memory and wait to be killed. 14*cf5a6c84SAndroid Build Coastguard Worker 15*cf5a6c84SAndroid Build Coastguard Worker -M Don't mlock() the memory (let it swap out). 16*cf5a6c84SAndroid Build Coastguard Worker */ 17*cf5a6c84SAndroid Build Coastguard Worker 18*cf5a6c84SAndroid Build Coastguard Worker #define FOR_memeater 19*cf5a6c84SAndroid Build Coastguard Worker #include "toys.h" 20*cf5a6c84SAndroid Build Coastguard Worker memeater_main(void)21*cf5a6c84SAndroid Build Coastguard Workervoid memeater_main(void) 22*cf5a6c84SAndroid Build Coastguard Worker { 23*cf5a6c84SAndroid Build Coastguard Worker unsigned long size = atolx_range(*toys.optargs, 0, LONG_MAX), i, 24*cf5a6c84SAndroid Build Coastguard Worker *p = xmalloc(size); 25*cf5a6c84SAndroid Build Coastguard Worker 26*cf5a6c84SAndroid Build Coastguard Worker // Lock and dirty the physical pages. 27*cf5a6c84SAndroid Build Coastguard Worker if (!FLAG(M) && mlock(p, size)) perror_exit("mlock"); 28*cf5a6c84SAndroid Build Coastguard Worker for (i = 0; i<size; i += 4096) p[i/sizeof(long)] = i; 29*cf5a6c84SAndroid Build Coastguard Worker 30*cf5a6c84SAndroid Build Coastguard Worker while (1) pause(); 31*cf5a6c84SAndroid Build Coastguard Worker } 32