From 7837c71b32fc716101a859302e0349061416bd6e Mon Sep 17 00:00:00 2001
From: kaashoek <kaashoek>
Date: Thu, 6 Jul 2006 21:47:22 +0000
Subject: disable all interrupts when acquiring lock user program that makes a
 blocking system call

---
 syscall.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

(limited to 'syscall.c')

diff --git a/syscall.c b/syscall.c
index 6343531..464d665 100644
--- a/syscall.c
+++ b/syscall.c
@@ -224,6 +224,20 @@ sys_cons_putc()
   return 0;
 }
 
+int
+sys_block(void)
+{
+  char buf[1];
+
+  cprintf("%d: call sys_block\n", cpu());
+  ide_init();
+  ide_read(0, buf, 1);
+  //  cprintf("sec0.0 %x\n", buf[0] & 0xff);
+  cprintf ("call sleep\n");
+  sleep (0);
+  return 0;
+}
+
 void
 syscall()
 {
@@ -257,6 +271,9 @@ syscall()
   case SYS_close:
     ret = sys_close();
     break;
+  case SYS_block:
+    ret = sys_block();
+    break;
   default:
     cprintf("unknown sys call %d\n", num);
     // XXX fault
-- 
cgit v1.2.3