diff options
author | kaashoek <kaashoek> | 2006-08-24 19:24:36 +0000 |
---|---|---|
committer | kaashoek <kaashoek> | 2006-08-24 19:24:36 +0000 |
commit | 81d521999844f1dfa9c419463bbb8e355817062a (patch) | |
tree | 459c6496257649bda7927db9de101253028b15d4 /usertests.c | |
parent | bcfb84b6a9077b5e035325b3396c062d1f183ac4 (diff) | |
download | xv6-labs-81d521999844f1dfa9c419463bbb8e355817062a.tar.gz xv6-labs-81d521999844f1dfa9c419463bbb8e355817062a.tar.bz2 xv6-labs-81d521999844f1dfa9c419463bbb8e355817062a.zip |
bug in sbrk
test malloc
Diffstat (limited to 'usertests.c')
-rw-r--r-- | usertests.c | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/usertests.c b/usertests.c index 0d3e2bc..cb01c92 100644 --- a/usertests.c +++ b/usertests.c @@ -117,14 +117,50 @@ exitwait(void) puts("exitwait ok\n"); } +void +mem(void) +{ + void *m = malloc(4096); + void *m1, *m2; + + free(m + 3*1024); + free(m + 2*1024); + free(m + 1024); + free(m); + m1 = malloc(4096); + if (m1 != m) { + puts("didn't coalesce\n"); + exit(); + } + free(m1); + + m1 = 0; + while ((m2 = malloc(1024)) != 0) { + *(char **) m2 = m1; + m1 = m2; + } + while (m1) { + m2 = *(char **)m1; + free(m1); + m1 = m2; + } + m1 = malloc(1024*20); + if (m1 == 0) { + puts("couldn't allocate mem?!!\n"); + exit(); + } + free(m1); +} + int main(int argc, char *argv[]) { puts("usertests starting\n"); - pipe1(); - preempt(); - exitwait(); + // pipe1(); + // preempt(); + // exitwait(); + mem(); puts("usertests finished\n"); exit(); |