[RFC]: switch to 2.6 linux emulation on default

Alexander Leidinger Alexander at Leidinger.net
Sat May 31 07:18:10 UTC 2008


Quoting Ed Schouten <ed at 80386.nl> (Fri, 30 May 2008 11:49:11 +0200):

> * Alexander Leidinger <Alexander at Leidinger.net> wrote:
> > Quoting Ed Schouten <ed at 80386.nl> (from Fri, 30 May 2008 07:04:53 +0200):
> >
> >> Hello Roman,
> >>
> >> * Roman Divacky <rdivacky at freebsd.org> wrote:
> >>> FreeBSD 7.0 contains support for running emulation of Linux 2.6
> >>> (= NPTL, futexes, TLS basically) and I'd like to switch this
> >>> on default in HEAD to see if we can ship 8.0 with this emulation
> >>> running on default.
> >>
> >> Speaking about Linux emulation: a couple of days ago I added Linux
> >> support to my TTY code in the mpsafetty branch. This means that it can
> >> handle the things done in posix_openpt() and ptsname().
> >>
> >> Because Linux wants the minor number to be within a certain region, the
> >> PTY driver creates a linux_device_handler for each device. ptsname()
> >
> > There's already something like a device handler or wrapper or whatever  
> > (I hadn't a close look at this) for some devices. Does your work use  
> > this existing infrastructure or is this something else?
> 
> It just calls linux_device_register_handler() to create the mapping. I'm
> not entirely happy with this yet, because this means our pts(4) driver
> needs to be recompiled to work with Linux binary compatibility.

We don't have a function in the kernel linker available which you can
use to lookup the function, and if you get a good pointer back, call it?

> In CVS, there is already some code in place to make the mapping work for
> /dev/pts/XXX (see linux_stats.c), but it always returns the same device
> number for all pts devices. I should probably just change that code to
> parse the device number and base the major/minor number on that.
> 
> >> seems to do an fstat() on the controller descriptor, followed by looping
> >> on the files in /dev and /dev/pts, to find the matching device number.
> >>
> >> Unfortunately sendmsg() seems broken on amd64 with COMPAT_LINUX32. This
> >
> > The LTP test (http://wiki.freebsd.org/linux-kernel/ltp) for sendmsg  
> > tells it is broken on all architectures. Did you test on a i386 system  
> > too?
> 
> On i386, it works good enough to at least make sshd work. On amd64 it
> returns EINVAL, using the same Linux binaries.

Thanks for the data point.

Bye,
Alexander.

-- 
YOU!!  Give me the CUTEST, PINKEST, most charming little VICTORIAN
DOLLHOUSE you can find!!  An make it SNAPPY!!
http://www.Leidinger.net  Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org     netchild @ FreeBSD.org  : PGP ID = 72077137


More information about the freebsd-emulation mailing list