On Tue, 18 May 1999, Mike Smith wrote:

> > 
> > However, this applies to the functionality wherever it is implemented.
> > Moving the formatting to the kernel does not change anything.
> 
> It "changes" things in that it unnecessarily bloats the kernel.
I agree. My reference was in relation to the the need for locks.
Whether you are in the kernel or in userland, you need locks to get
around race conditions.

> > If you are concerned about the time that it takes to do hostname lookups,
> > that time is not any shorter in the kernel.
> 
> You can't perform hostname lookups in the kernel.
Today... (And I see no reason to add that functionality there) 

> > There are two fundamental approaches that work.
> > 
> > 1) Lock the structure
> >    Make a snapshot copy
> >    Unlock the structure
> >    Generate the report from the copy
> >    Destroy the copy
> > 
> > This technique can be used in either userland or kernel implementation.
> 
> You can't lock kernel datastructures from userland (except for certain 
> very specific cases where the lock is a side-effect of another 
> operation).
I again agree. The "lock, copy, unlock" sequence would probably be a
single operation that userland requests the kernel to perform.

> > 2) Use list traversal protocols that prevent the actual deletes from
> > occurring while there is another list reader in that portion of the list.
> > 
> > Again, the only requirement in the kernel is the ability set and clear the
> > lock. The remainder of the formatting can occur outside the kernel
> > because the structures being viewed and not destroyed during the
> > traversal. 
> 
> This is where sysctl is preferable; the system call allows the kernel 
> to perform whatever locking protocol is required to complete the call 
> in a timely and efficient fashion, and all formatting can be performed 
> in userland while the kernel holds no locks.
> 
> Consider the similarities to NFS directory traversals, and the cookie 
> approach used in NFSv3 to deal with server-side state changes during 
> traversal by the client.  You're arguing about a problem that already 
> has several tried and tested solutions.

I'm not arguing about anything. I'm stating that the technique is one
possible solution to the "race" problem.



To Unsubscribe: send mail to [email protected]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to