diff options
author | kaashoek <kaashoek> | 2006-07-06 21:47:22 +0000 |
---|---|---|
committer | kaashoek <kaashoek> | 2006-07-06 21:47:22 +0000 |
commit | 7837c71b32fc716101a859302e0349061416bd6e (patch) | |
tree | 57ec72178b980a3cd794b2f93bd021e08004368f /syscall.c | |
parent | b22d898297a2496ba4cfd31d445769fbebc0a46d (diff) | |
download | xv6-labs-7837c71b32fc716101a859302e0349061416bd6e.tar.gz xv6-labs-7837c71b32fc716101a859302e0349061416bd6e.tar.bz2 xv6-labs-7837c71b32fc716101a859302e0349061416bd6e.zip |
disable all interrupts when acquiring lock
user program that makes a blocking system call
Diffstat (limited to 'syscall.c')
-rw-r--r-- | syscall.c | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -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 |