mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	um: Pass nsecs to os timer functions
This makes the code clearer and lets the time travel patch have the actual time used for these functions in just one place. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
		
							parent
							
								
									b00bdd3244
								
							
						
					
					
						commit
						c7c6f3b953
					
				
					 3 changed files with 12 additions and 16 deletions
				
			
		|  | @ -251,8 +251,8 @@ extern void os_warn(const char *fmt, ...) | |||
| /* time.c */ | ||||
| extern void os_idle_sleep(unsigned long long nsecs); | ||||
| extern int os_timer_create(void); | ||||
| extern int os_timer_set_interval(void); | ||||
| extern int os_timer_one_shot(unsigned long ticks); | ||||
| extern int os_timer_set_interval(unsigned long long nsecs); | ||||
| extern int os_timer_one_shot(unsigned long long nsecs); | ||||
| extern void os_timer_disable(void); | ||||
| extern void uml_idle_timer(void); | ||||
| extern long long os_persistent_clock_emulation(void); | ||||
|  |  | |||
|  | @ -37,14 +37,14 @@ static int itimer_shutdown(struct clock_event_device *evt) | |||
| 
 | ||||
| static int itimer_set_periodic(struct clock_event_device *evt) | ||||
| { | ||||
| 	os_timer_set_interval(); | ||||
| 	os_timer_set_interval(NSEC_PER_SEC / HZ); | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static int itimer_next_event(unsigned long delta, | ||||
| 			     struct clock_event_device *evt) | ||||
| { | ||||
| 	return os_timer_one_shot(delta); | ||||
| 	return os_timer_one_shot(delta + 1); | ||||
| } | ||||
| 
 | ||||
| static int itimer_one_shot(struct clock_event_device *evt) | ||||
|  |  | |||
|  | @ -50,18 +50,15 @@ int os_timer_create(void) | |||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int os_timer_set_interval(void) | ||||
| int os_timer_set_interval(unsigned long long nsecs) | ||||
| { | ||||
| 	struct itimerspec its; | ||||
| 	unsigned long long nsec; | ||||
| 
 | ||||
| 	nsec = UM_NSEC_PER_SEC / UM_HZ; | ||||
| 	its.it_value.tv_sec = nsecs / UM_NSEC_PER_SEC; | ||||
| 	its.it_value.tv_nsec = nsecs % UM_NSEC_PER_SEC; | ||||
| 
 | ||||
| 	its.it_value.tv_sec = 0; | ||||
| 	its.it_value.tv_nsec = nsec; | ||||
| 
 | ||||
| 	its.it_interval.tv_sec = 0; | ||||
| 	its.it_interval.tv_nsec = nsec; | ||||
| 	its.it_interval.tv_sec = nsecs / UM_NSEC_PER_SEC; | ||||
| 	its.it_interval.tv_nsec = nsecs % UM_NSEC_PER_SEC; | ||||
| 
 | ||||
| 	if (timer_settime(event_high_res_timer, 0, &its, NULL) == -1) | ||||
| 		return -errno; | ||||
|  | @ -69,12 +66,11 @@ int os_timer_set_interval(void) | |||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int os_timer_one_shot(unsigned long ticks) | ||||
| int os_timer_one_shot(unsigned long long nsecs) | ||||
| { | ||||
| 	unsigned long long nsec = ticks + 1; | ||||
| 	struct itimerspec its = { | ||||
| 		.it_value.tv_sec = nsec / UM_NSEC_PER_SEC, | ||||
| 		.it_value.tv_nsec = nsec % UM_NSEC_PER_SEC, | ||||
| 		.it_value.tv_sec = nsecs / UM_NSEC_PER_SEC, | ||||
| 		.it_value.tv_nsec = nsecs % UM_NSEC_PER_SEC, | ||||
| 
 | ||||
| 		.it_interval.tv_sec = 0, | ||||
| 		.it_interval.tv_nsec = 0, // we cheat here
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Johannes Berg
						Johannes Berg