Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Feb 2005 06:41:58 -0500
From:      John Baldwin <jhb@FreeBSD.org>
To:        Maxim Sobolev <sobomax@portaone.com>
Cc:        cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/compat/linux linux_misc.c src/sys/kern kern_time.c src/sys/sys systm.h
Message-ID:  <200502010641.59236.jhb@FreeBSD.org>
In-Reply-To: <41FEC74F.2080005@portaone.com>
References:  <200501252128.j0PLSSHE081956@repoman.freebsd.org> <200501311814.24008.jhb@FreeBSD.org> <41FEC74F.2080005@portaone.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 31 January 2005 07:03 pm, Maxim Sobolev wrote:
> John Baldwin wrote:
> > On Monday 31 January 2005 04:01 pm, Maxim Sobolev wrote:
> >>John Baldwin wrote:
> >>>On Tuesday 25 January 2005 04:28 pm, Maxim Sobolev wrote:
> >>>>sobomax     2005-01-25 21:28:28 UTC
> >>>>
> >>>> FreeBSD src repository
> >>>>
> >>>> Modified files:
> >>>>   sys/compat/linux     linux_misc.c
> >>>>   sys/kern             kern_time.c
> >>>>   sys/sys              systm.h
> >>>> Log:
> >>>> Split out kernel side of {get,set}itimer(2) into two parts: the first
> >>>>that pops data from the userland and pushes results back and the second
> >>>>which does actual processing. Use the latter to eliminate stackgap in
> >>>> the linux wrappers of those syscalls.
> >>>>
> >>>> MFC after:      2 weeks
> >>>
> >>>Hmm, I already implemented kern_[sg]etitimer() locally and fixed all the
> >>>ABIs, not just Linux to use them.  I haven't had time to test the
> >>> patches though. Would you be interested in them?
> >>
> >>I would be happy to, but I don't have any platforms other than i386
> >>(which is why I have not touched other arches). Therefore I am probably
> >>a wrong person to do the testing. Is your approach different/better than
> >>mine? I'd be happy to do the merge if so.
> >
> > I've already merged.  It's mostly the same except I put the logic to fall
> > back to kern_getitimer() when there is no new itimerval in
> > kern_setitimer() rather than duplicating that in all the ABIs.
>
> Well, I had considered such approach, but rejected it because actually
> it doesn't win you much since you have to add some logic to avoid
> copyin() and submit NULL instead of &aitv to signal kern_setitimer()
> that it has to call kern_getitimer() into each ABI instead. As to my
> taste such obfuscation (which is duplicated among all ABIs) isn't worth
> it. At the same time, linecount wise it is probably the same amount of
> duplication anyway.

Yes, but modifying struct uap on the fly and assuming you can cast it to the 
new type without problems is worse IMHO. :)  Especially when you have to deal 
with emulating an ABI like freebsd32 where the pointer sizes are different 
between the kernel and the userland APP you are running.

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200502010641.59236.jhb>