cvs commit: src/lib/libc/gen arc4random.c
Brian F. Feldman
green at FreeBSD.ORG
Wed Mar 24 19:41:07 PST 2004
Mike Silbersack <silby at silby.com> wrote:
>
> On Wed, 24 Mar 2004, David Schultz wrote:
>
> > > Add locking so that arc4random(3) functions are all reentrant for
> > > pthreads.
> >
> > I think you mean thread-safe, not reentrant. Also:
> > PR: 63287
> >
> > AFAIK, there's no standard for how arc4random() is supposed to
> > behave, but the new behavior is a break from that of other BSDs,
> > and from the behavior of random(), so the change should probably
> > be documented in the manpage.
>
> Er, what would the manpage say? "arc4random no longer corrupts its state
> when called simultaneously?" If our other library routines do not
> guarantee this, they probably should be changed so that they do.
There's no reason to make a distinction. Quoth the OED:
"b. Computers. Of, pertaining to, or designating a program or subprogram which may be called or entered many times concurrently from one or several programs without alteration of the results obtained from any one execution."
> > FWIW, on my UP Pentium 4 with SMT, this adds roughly 3% overhead
> > for unthreaded apps and 52% overhead for threaded apps. It is
> > conceivable that an application writer would want access to the
> > raw interface in order to serialize calls manually for efficiency,
> > but I'm not such an application writer, so I won't complain.
>
> As I said when I locked down arc4random in the kernel, it would be
> possible to use seperate entropy buckets for each processor (or thread) if
> performance really becomes an issue.
Agreed. We should be providing reentrant interfaces except where explicitly
unable to do so, run-time cost not being the primary concern. That said,
the man pages for all non-reentrant interfaces should be annotated as such.
The submitter has hinted that he may compile a full list of all of those :-)
--
Brian Fundakowski Feldman \'[ FreeBSD ]''''''''''\
<> green at FreeBSD.org \ The Power to Serve! \
Opinions expressed are my own. \,,,,,,,,,,,,,,,,,,,,,,\
More information about the cvs-src
mailing list