mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:42:43 +00:00 
			
		
		
		
	Kernel: Disable big process lock for sys$clock_gettime()
This syscall doesn't touch any intra-process shared resources and reads the time via the atomic TimeManagement::current_time, so it doesn't need to hold any lock.
This commit is contained in:
		
							parent
							
								
									1a08694dfc
								
							
						
					
					
						commit
						fbd848e6eb
					
				
					 2 changed files with 2 additions and 2 deletions
				
			
		|  | @ -157,7 +157,7 @@ enum class NeedsBigProcessLock { | ||||||
|     S(getrandom, NeedsBigProcessLock::No)                   \ |     S(getrandom, NeedsBigProcessLock::No)                   \ | ||||||
|     S(getkeymap, NeedsBigProcessLock::No)                   \ |     S(getkeymap, NeedsBigProcessLock::No)                   \ | ||||||
|     S(setkeymap, NeedsBigProcessLock::Yes)                  \ |     S(setkeymap, NeedsBigProcessLock::Yes)                  \ | ||||||
|     S(clock_gettime, NeedsBigProcessLock::Yes)              \ |     S(clock_gettime, NeedsBigProcessLock::No)               \ | ||||||
|     S(clock_settime, NeedsBigProcessLock::Yes)              \ |     S(clock_settime, NeedsBigProcessLock::Yes)              \ | ||||||
|     S(clock_nanosleep, NeedsBigProcessLock::Yes)            \ |     S(clock_nanosleep, NeedsBigProcessLock::Yes)            \ | ||||||
|     S(join_thread, NeedsBigProcessLock::Yes)                \ |     S(join_thread, NeedsBigProcessLock::Yes)                \ | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ namespace Kernel { | ||||||
| 
 | 
 | ||||||
| KResultOr<FlatPtr> Process::sys$clock_gettime(clockid_t clock_id, Userspace<timespec*> user_ts) | KResultOr<FlatPtr> Process::sys$clock_gettime(clockid_t clock_id, Userspace<timespec*> user_ts) | ||||||
| { | { | ||||||
|     VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); |     VERIFY_NO_PROCESS_BIG_LOCK(this); | ||||||
|     REQUIRE_PROMISE(stdio); |     REQUIRE_PROMISE(stdio); | ||||||
| 
 | 
 | ||||||
|     if (!TimeManagement::is_valid_clock_id(clock_id)) |     if (!TimeManagement::is_valid_clock_id(clock_id)) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Idan Horowitz
						Idan Horowitz