]> Devi Nivas Git - cs3210-lab0.git/commitdiff
kill user process when it generates an unhandled trap (e.g., 13)
authorkaashoek <kaashoek>
Fri, 25 Aug 2006 00:43:17 +0000 (00:43 +0000)
committerkaashoek <kaashoek>
Fri, 25 Aug 2006 00:43:17 +0000 (00:43 +0000)
fix bug in test code of malloc

trap.c
umalloc.c
usertests.c

diff --git a/trap.c b/trap.c
index d20199093b1eac760848d0f3c6c18372001b1e9c..f26024b63f0529353cdc7f8bb77a6afa8703aac0 100644 (file)
--- a/trap.c
+++ b/trap.c
@@ -126,8 +126,10 @@ trap(struct trapframe *tf)
   }
 
   cprintf("trap %d from cpu %d eip %x\n", v, cpu(), tf->eip);
-  if(curproc[cpu()])
+  if(curproc[cpu()]) {
     cprintf("pid %d\n", curproc[cpu()]->pid);
+    proc_exit();
+  }
   //  panic("trap");
 
   return;
index 11d816aba18c34e0b4eddc841c8eb54c4111c25b..cdf099efbd181046408fa46744354ed977c3a6c3 100644 (file)
--- a/umalloc.c
+++ b/umalloc.c
@@ -26,8 +26,6 @@ free(void *ap)
 {
   Header *bp, *p;
 
-  printf(1, "free\n");
-
   bp = (Header *) ap - 1;
   for (p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
     if (p >= p->s.ptr && (bp > p || bp < p->s.ptr))
@@ -53,7 +51,6 @@ morecore(uint nu)
   
   if (nu < PAGE)
     nu = PAGE;
-  printf(1, "call sbrk\n");
   cp = sbrk(nu * sizeof(Header));
   if (cp == (char *) -1)
     return 0;
@@ -69,8 +66,6 @@ malloc(uint nbytes)
   Header *p, *prevp;
   uint nunits;
 
-  printf(1, "malloc %d\n", nbytes);
-
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
   if ((prevp = freep) == 0) {
     base.s.ptr = freep = prevp = &base;
@@ -86,7 +81,6 @@ malloc(uint nbytes)
        p->s.size = nunits;
       }
       freep = prevp;
-      printf(1, "malloc returns: %d\n", (int) (p+1));
       return (void *) (p + 1);
     }
     if (p == freep) 
index cb01c92f248ab69528ad2adc1f3f883d3172d6c4..2b8b64f7bf1f5a4d9ee5473c75241a6e5f8fff99 100644 (file)
@@ -120,20 +120,8 @@ exitwait(void)
 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;