Add a "syncd" kernel process that periodically calls sync().

This commit is contained in:
Andreas Kling 2018-12-20 02:41:55 +01:00
parent ed7ae6c02c
commit 89040cdc99
Notes: sideshowbarker 2024-07-19 16:07:54 +09:00
3 changed files with 13 additions and 1 deletions

View file

@ -44,7 +44,7 @@ void initialize()
kprintf("syscall: int 0x80 handler installed\n"); kprintf("syscall: int 0x80 handler installed\n");
} }
static int sync() int sync()
{ {
VFS::the().sync(); VFS::the().sync();
return 0; return 0;

View file

@ -103,6 +103,7 @@ struct SC_mmap_params {
}; };
void initialize(); void initialize();
int sync();
inline dword invoke(Function function) inline dword invoke(Function function)
{ {

View file

@ -167,6 +167,15 @@ static void spawn_stress()
} }
#endif #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() NORETURN;
static void init_stage2() static void init_stage2()
{ {
@ -285,6 +294,8 @@ void init()
Process::initialize(); Process::initialize();
Process::create_kernel_process(init_stage2, "init_stage2"); Process::create_kernel_process(init_stage2, "init_stage2");
Process::create_kernel_process(syncd, "syncd");
Scheduler::pick_next(); Scheduler::pick_next();
sti(); sti();