diff options
author | rsc <rsc> | 2006-07-17 05:00:25 +0000 |
---|---|---|
committer | rsc <rsc> | 2006-07-17 05:00:25 +0000 |
commit | 0dd4253747eef56d0f1539fac7d62234f6af5f51 (patch) | |
tree | 1c28a6d0ce4cef90f85fd5f8b0106d431bfeffda /syscall.c | |
parent | b5f17007f41770fee97fa850635976ceb7aa7492 (diff) | |
download | xv6-labs-0dd4253747eef56d0f1539fac7d62234f6af5f51.tar.gz xv6-labs-0dd4253747eef56d0f1539fac7d62234f6af5f51.tar.bz2 xv6-labs-0dd4253747eef56d0f1539fac7d62234f6af5f51.zip |
add ide_lock for sleep
Diffstat (limited to 'syscall.c')
-rw-r--r-- | syscall.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -228,17 +228,20 @@ sys_block(void) char buf[512]; int i, j; void *c; + extern struct spinlock ide_lock; cprintf("%d: call sys_block\n", cpu()); for (i = 0; i < 100; i++) { + acquire(&ide_lock); if ((c = ide_start_read(i, buf, 1)) == 0) { panic("couldn't start read\n"); } cprintf("call sleep\n"); - sleep (c, 0); + sleep (c, &ide_lock); if (ide_finish_read(c)) { panic("couldn't do read\n"); } + release(&ide_lock); cprintf("sector %d: ", i); for (j = 0; j < 2; j++) cprintf("%x ", buf[j] & 0xff); |