ntp: Add ADJ_SETOFFSET mode bit
This patch adds a new mode bit into the timex structure. When set, the bit instructs the kernel to add the given time value to the current time. Signed-off-by: Richard Cochran <richard.cochran@omicron.at> Acked-by: John Stultz <johnstul@us.ibm.com> LKML-Reference: <20110201134320.688829863@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
		
					parent
					
						
							
								c528f7c6c2
							
						
					
				
			
			
				commit
				
					
						094aa1881f
					
				
			
		
					 2 changed files with 13 additions and 1 deletions
				
			
		|  | @ -73,7 +73,7 @@ struct timex { | |||
| 	long tolerance;		/* clock frequency tolerance (ppm)
 | ||||
| 				 * (read only) | ||||
| 				 */ | ||||
| 	struct timeval time;	/* (read only) */ | ||||
| 	struct timeval time;	/* (read only, except for ADJ_SETOFFSET) */ | ||||
| 	long tick;		/* (modified) usecs between clock ticks */ | ||||
| 
 | ||||
| 	long ppsfreq;           /* pps frequency (scaled ppm) (ro) */ | ||||
|  | @ -102,6 +102,7 @@ struct timex { | |||
| #define ADJ_STATUS		0x0010	/* clock status */ | ||||
| #define ADJ_TIMECONST		0x0020	/* pll time constant */ | ||||
| #define ADJ_TAI			0x0080	/* set TAI offset */ | ||||
| #define ADJ_SETOFFSET		0x0100  /* add 'time' to current time */ | ||||
| #define ADJ_MICRO		0x1000	/* select microsecond resolution */ | ||||
| #define ADJ_NANO		0x2000	/* select nanosecond resolution */ | ||||
| #define ADJ_TICK		0x4000	/* tick value */ | ||||
|  |  | |||
|  | @ -648,6 +648,17 @@ int do_adjtimex(struct timex *txc) | |||
| 			hrtimer_cancel(&leap_timer); | ||||
| 	} | ||||
| 
 | ||||
| 	if (txc->modes & ADJ_SETOFFSET) { | ||||
| 		struct timespec delta; | ||||
| 		if ((unsigned long)txc->time.tv_usec >= NSEC_PER_SEC) | ||||
| 			return -EINVAL; | ||||
| 		delta.tv_sec  = txc->time.tv_sec; | ||||
| 		delta.tv_nsec = txc->time.tv_usec; | ||||
| 		if (!(txc->modes & ADJ_NANO)) | ||||
| 			delta.tv_nsec *= 1000; | ||||
| 		timekeeping_inject_offset(&delta); | ||||
| 	} | ||||
| 
 | ||||
| 	getnstimeofday(&ts); | ||||
| 
 | ||||
| 	write_seqlock_irq(&xtime_lock); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Richard Cochran
				Richard Cochran