lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 14 Mar 2008 13:55:05 -0700
From:	john stultz <johnstul@...ibm.com>
To:	zippel@...ux-m68k.org
Cc:	linux-kernel@...r.kernel.org, akpm@...ux-foundation.org
Subject: Re: [PATCH 5/8] support for TAI


On Fri, 2008-03-14 at 19:40 +0100, zippel@...ux-m68k.org wrote:
> plain text document attachment (time_tai)
> This adds support for setting the TAI value (International Atomic Time).
> The value is reported back to userspace via timex (as we don't have a
> ntp_gettime() syscall).
> 
> Signed-off-by: Roman Zippel <zippel@...ux-m68k.org>
> 

Very cool. I just was talking with someone who was looking for a TAI
interface. 

Minor nit below.

-john


> Index: linux-2.6-mm/kernel/time/ntp.c
> ===================================================================
> --- linux-2.6-mm.orig/kernel/time/ntp.c
> +++ linux-2.6-mm/kernel/time/ntp.c
> @@ -35,6 +35,7 @@ static u64 tick_length, tick_length_base
>  /* TIME_ERROR prevents overwriting the CMOS clock */
>  static int time_state = TIME_OK;	/* clock synchronization status	*/
>  int time_status = STA_UNSYNC;		/* clock status bits		*/
> +static long time_tai;			/* TAI offset (s)		*/

I think timekeeping.c would be the better place for time_tai, keeping it
closer to xtime and wall_to_monotonic's definitions.


>  static s64 time_offset;			/* time adjustment (ns)		*/
>  static long time_constant = 2;		/* pll time constant		*/
>  long time_maxerror = NTP_PHASE_LIMIT;	/* maximum error (us)		*/
> @@ -162,6 +163,7 @@ void second_overflow(void)
>  	case TIME_DEL:
>  		if ((xtime.tv_sec + 1) % 86400 == 0) {
>  			xtime.tv_sec++;
> +			time_tai--;
>  			wall_to_monotonic.tv_sec--;
>  			time_state = TIME_WAIT;
>  			printk(KERN_NOTICE "Clock: deleting leap second "
> @@ -169,6 +171,7 @@ void second_overflow(void)
>  		}
>  		break;
>  	case TIME_OOP:
> +		time_tai++;
>  		time_state = TIME_WAIT;
>  		break;
>  	case TIME_WAIT:


These manipulations could also be done in the
timekeeping_insert/remove_second interface I suggested earlier.


> @@ -340,6 +343,9 @@ int do_adjtimex(struct timex *txc)
>  			time_constant = max(time_constant, 0l);
>  		}
> 
> +		if (txc->modes & ADJ_TAI && txc->constant > 0)
> +			time_tai = txc->constant;
> +
>  		if (txc->modes & ADJ_OFFSET) {
>  			if (txc->modes == ADJ_OFFSET_SINGLESHOT)
>  				/* adjtime() is independent from ntp_adjtime() */
> @@ -375,6 +381,7 @@ int do_adjtimex(struct timex *txc)
>  	txc->precision	   = 1;
>  	txc->tolerance	   = MAXFREQ_SCALED / PPM_SCALE;
>  	txc->tick	   = tick_usec;
> +	txc->tai	   = time_tai;
> 
>  	/* PPS is not implemented, so these are zero */
>  	txc->ppsfreq	   = 0;
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ