svn commit: r219653 - in head/sys: arm/include i386/include

Jung-uk Kim jkim at FreeBSD.org
Tue Mar 15 15:29:43 UTC 2011


On Tuesday 15 March 2011 02:19 am, Maxim Dounin wrote:
> Hello!
>
> On Mon, Mar 14, 2011 at 11:30:14PM +0000, Jung-uk Kim wrote:
> > Author: jkim
> > Date: Mon Mar 14 23:30:14 2011
> > New Revision: 219653
> > URL: http://svn.freebsd.org/changeset/base/219653
> >
> > Log:
> >   Make get_cyclecount(9) little bit more useful where
> > binuptime(9) is used.
>
> get_cyclecount(9) is for random harvesting, and dropping half of
> it's entropy in binuptime() case may not be a good idea.

I know it is used for random harvesting but we are not dropping much 
entropy here (if any).  Because it is mostly used boot time, bt.sec 
is often times trivial.  In other words, it only affects few lower 
bits (trivially) and other bits are just flipped.  Basically, I am 
trying to preserve as much entropy as possible without losing 
historical get_cyclecount() semantics.

> It's probably better to fix manpage instead, to clarify it's
> intended usage.

It had to be done long ago. :-(

Jung-uk Kim

> Maxim Dounin
>
> > Modified:
> >   head/sys/arm/include/cpu.h
> >   head/sys/i386/include/cpu.h
> >
> > Modified: head/sys/arm/include/cpu.h
> > =================================================================
> >============= --- head/sys/arm/include/cpu.h	Mon Mar 14 23:19:04
> > 2011	(r219652) +++ head/sys/arm/include/cpu.h	Mon Mar 14 23:30:14
> > 2011	(r219653) @@ -16,7 +16,7 @@ get_cyclecount(void)
> >  	struct bintime bt;
> >
> >  	binuptime(&bt);
> > -	return (bt.frac ^ bt.sec);
> > +	return ((uint64_t)bt.sec << 56 | bt.frac >> 8);
> >
> >  }
> >  #endif
> >
> > Modified: head/sys/i386/include/cpu.h
> > =================================================================
> >============= --- head/sys/i386/include/cpu.h	Mon Mar 14 23:19:04
> > 2011	(r219652) +++ head/sys/i386/include/cpu.h	Mon Mar 14
> > 23:30:14 2011	(r219653) @@ -67,7 +67,7 @@ void	swi_vm(void *);
> >   * Return contents of in-cpu fast counter as a sort of
> > "bogo-time" * for random-harvesting purposes.
> >   */
> > -static __inline u_int64_t
> > +static __inline uint64_t
> >  get_cyclecount(void)
> >  {
> >  #if defined(I486_CPU) || defined(KLD_MODULE)
> > @@ -75,7 +75,7 @@ get_cyclecount(void)
> >
> >  	if (!tsc_present) {
> >  		binuptime(&bt);
> > -		return (bt.frac ^ bt.sec);
> > +		return ((uint64_t)bt.sec << 56 | bt.frac >> 8);
> >  	}
> >  #endif
> >  	return (rdtsc());
> > _______________________________________________
> > svn-src-all at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/svn-src-all
> > To unsubscribe, send any mail to
> > "svn-src-all-unsubscribe at freebsd.org"


More information about the svn-src-all mailing list