1663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#include <stdio.h> 2663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#include <unistd.h> 3663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 4663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MAX 20000 5663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 6663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengint main () { 7663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng int i; 8663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng int inc_dec; 9663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng int delta; 10436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov intptr_t brk_stat; 11663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 12663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // loop to first increase, then decrease 13663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng for (inc_dec = 1; inc_dec >= -1; inc_dec-=2) { 14663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // loop to increase(decrease) with small then big delta 15663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng for (delta = 1; delta <= 400; delta+=399) { 16663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng if (0) printf("initial brk value for inc_dec %d delta %d: %p\n", 17663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng inc_dec, delta, sbrk(0)); 18663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng for (i=0; i<MAX; i++) { 19436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov brk_stat = (intptr_t)brk(sbrk(0) + inc_dec * delta); 20663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng if (brk_stat == -1) { 21663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("brk value at failure: %p\n", sbrk(0)); 22663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng perror ("brk() failed!\n"); 23663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng return 0; 24663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 25663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 26663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng if (0) printf("resulting brk value for inc_dec %d delta %d: %p\n", 27663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng inc_dec, delta, sbrk(0)); 28663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 29663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 30663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 31663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng return 0; 32663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} 33