mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:18:11 +00:00
Add sync() syscall and a /bin/sync.
It walks all the live Inode objects and flushes pending metadata changes wherever needed. This could be optimized by keeping a separate list of dirty Inodes, but let's not get ahead of ourselves.
This commit is contained in:
parent
d0f06e5f3f
commit
ed7ae6c02c
14 changed files with 78 additions and 24 deletions
|
@ -44,6 +44,12 @@ void initialize()
|
|||
kprintf("syscall: int 0x80 handler installed\n");
|
||||
}
|
||||
|
||||
static int sync()
|
||||
{
|
||||
VFS::the().sync();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static dword handle(RegisterDump& regs, dword function, dword arg1, dword arg2, dword arg3)
|
||||
{
|
||||
ASSERT_INTERRUPTS_ENABLED();
|
||||
|
@ -179,6 +185,8 @@ static dword handle(RegisterDump& regs, dword function, dword arg1, dword arg2,
|
|||
return current->sys$times((Unix::tms*)arg1);
|
||||
case Syscall::SC_utime:
|
||||
return current->sys$utime((const char*)arg1, (const Unix::utimbuf*)arg2);
|
||||
case Syscall::SC_sync:
|
||||
return sync();
|
||||
default:
|
||||
kprintf("<%u> int0x80: Unknown function %u requested {%x, %x, %x}\n", current->pid(), function, arg1, arg2, arg3);
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue