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