diff --git a/Kernel/Syscall.cpp b/Kernel/Syscall.cpp index 1cfc118cd80..a429fe770ba 100644 --- a/Kernel/Syscall.cpp +++ b/Kernel/Syscall.cpp @@ -44,7 +44,7 @@ void initialize() kprintf("syscall: int 0x80 handler installed\n"); } -static int sync() +int sync() { VFS::the().sync(); return 0; diff --git a/Kernel/Syscall.h b/Kernel/Syscall.h index 84e352e7e71..3c86fe26940 100644 --- a/Kernel/Syscall.h +++ b/Kernel/Syscall.h @@ -103,6 +103,7 @@ struct SC_mmap_params { }; void initialize(); +int sync(); inline dword invoke(Function function) { diff --git a/Kernel/init.cpp b/Kernel/init.cpp index 6e60919f1ee..9f15b5df887 100644 --- a/Kernel/init.cpp +++ b/Kernel/init.cpp @@ -167,6 +167,15 @@ static void spawn_stress() } #endif +static void syncd() NORETURN; +static void syncd() +{ + for (;;) { + Syscall::sync(); + sleep(10 * TICKS_PER_SECOND); + } +} + static void init_stage2() NORETURN; static void init_stage2() { @@ -285,6 +294,8 @@ void init() Process::initialize(); Process::create_kernel_process(init_stage2, "init_stage2"); + Process::create_kernel_process(syncd, "syncd"); + Scheduler::pick_next(); sti();