Subject: Re: pollscan (was Re: {sys,}trace_enter and retval arg)
To: Bang Jun-Young <junyoung@netbsd.org>
From: Simon Burge <simonb@wasabisystems.com>
List: tech-kern
Date: 10/27/2003 20:30:41
Bang Jun-Young wrote:

> On Mon, Oct 27, 2003 at 04:40:26PM +0900, Bang Jun-Young wrote:
> > On Mon, Oct 27, 2003 at 12:14:39PM +1100, Simon Burge wrote:
> > > Folks,
> > > 
> > > trace_enter() and systrace_enter() don't use the return val arg
> > > parsed to them.  Anyone mind if I remove them?  A mechanical diff
> > > is below - I've test-compiled on a few archs so far without errors.
> > 
> > BTW, I remember one of sys_poll related functions not using the retval
> > passed, either.
> 
> It's actually a different kind of code.
> 
> Currently pollscan() in sys_generic.c is defined as
> 
> int
> pollscan(struct proc *p, struct pollfd *fds, int nfd, register_t *retval)
> 
> But unlike selscan() for sys_select(), it always returns 0 to the
> caller,
> 
> 	...
> 	*retval = n;
> 	return (0);
> }
> 
> the following check in sys_poll()
> 
> 	error = pollscan(p, (struct pollfd *)bits, SCARG(uap, nfds), retval);
> 	if (error || *retval)
> 		goto done;
> 
> can be simplified as
> 
>         pollscan(p, (struct pollfd *)bits, SCARG(uap, nfds), retval);
> 	if (*retval)
> 		goto done;
> 
> then pollscan() should be changed to return nothing (i.e. void).
> 
> I'm not sure if it is worth changing it, however.

May as well.  You'll save a few precious cycles that we can no doubt
suck up elsewhere :-)

Simon.
--
Simon Burge                            <simonb@wasabisystems.com>
NetBSD Support and Service:         http://www.wasabisystems.com/