summaryrefslogtreecommitdiff
path: root/syscall.c
diff options
context:
space:
mode:
authorrsc <rsc>2006-07-17 05:00:25 +0000
committerrsc <rsc>2006-07-17 05:00:25 +0000
commit0dd4253747eef56d0f1539fac7d62234f6af5f51 (patch)
tree1c28a6d0ce4cef90f85fd5f8b0106d431bfeffda /syscall.c
parentb5f17007f41770fee97fa850635976ceb7aa7492 (diff)
downloadxv6-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.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/syscall.c b/syscall.c
index 7bd37b7..58045d4 100644
--- a/syscall.c
+++ b/syscall.c
@@ -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);