mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:32:44 +00:00 
			
		
		
		
	 021fb3ea05
			
		
	
	
		021fb3ea05
		
	
	
	
	
		
			
			Since we never check a kernel process's state like a userland process, it's possible for a kernel process to ignore the fact that someone is trying to kill it, and continue running. This is not desireable if we want to properly shutdown all processes, including Kernel ones.
		
			
				
	
	
		
			28 lines
		
	
	
	
		
			743 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
	
		
			743 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include <Kernel/FileSystem/VirtualFileSystem.h>
 | |
| #include <Kernel/Sections.h>
 | |
| #include <Kernel/Tasks/Process.h>
 | |
| #include <Kernel/Tasks/SyncTask.h>
 | |
| #include <Kernel/Time/TimeManagement.h>
 | |
| 
 | |
| namespace Kernel {
 | |
| 
 | |
| UNMAP_AFTER_INIT void SyncTask::spawn()
 | |
| {
 | |
|     MUST(Process::create_kernel_process(KString::must_create("VFS Sync Task"sv), [] {
 | |
|         dbgln("VFS SyncTask is running");
 | |
|         while (!Process::current().is_dying()) {
 | |
|             VirtualFileSystem::sync();
 | |
|             (void)Thread::current()->sleep(Duration::from_seconds(1));
 | |
|         }
 | |
|         Process::current().sys$exit(0);
 | |
|         VERIFY_NOT_REACHED();
 | |
|     }));
 | |
| }
 | |
| 
 | |
| }
 |