diff options
Diffstat (limited to 'kernel/features/syscall.c')
-rw-r--r-- | kernel/features/syscall.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/features/syscall.c b/kernel/features/syscall.c index dbb7033..c5570c3 100644 --- a/kernel/features/syscall.c +++ b/kernel/features/syscall.c @@ -37,7 +37,12 @@ void syscall_handler(struct regs *r) break; } case SYS_READ: { - r->eax = (u32)vfs_read((char *)r->ebx, (void *)r->ecx, r->edx, r->esi); + if (vfs_ready((char *)r->ebx)) { + r->eax = (u32)vfs_read((char *)r->ebx, (void *)r->ecx, r->edx, r->esi); + } else { + proc_current()->state = PROC_SLEEPING; + scheduler(r); + } break; } case SYS_WRITE: { |