Add linuxulator

Heavily edited by me and may have some content errors.

Approved by:	hrs (mentor, blanket)
This commit is contained in:
Benjamin Kaduk 2015-01-10 00:52:34 +00:00
parent 58d47f81ef
commit 1cca9d4377
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46183

View file

@ -1788,4 +1788,82 @@
</help>
</project>
<project cat='kern'>
<title>Linux emulation layer a.k.a. Linuxulator</title>
<contact>
<person>
<name>
<given>Dmitry</given>
<common>Chagin</common>
</name>
<email>dchagin@FreeBSD.org</email>
</person>
</contact>
<body>
<p>The main goal of the lemul project is the execution of
multithreaded Linux applications, which requires the glibc library
version 2.20 or later to be available on &os;. Glibc 2.20
requires a Linux kernel (or emulation thereof) of version 2.6.32
or later. The main obstacle preventing this is that the current
Linuxulator uses native FreeBSD processes for emulating Linux
threads. This leads to several problems, including problems with
process reparenting and dethreading, <tt>wait()</tt> and signal
handling. It would be much better to reuse the FreeBSD kernel
code for thread management than to create a completely new
codebase for pseudothread management in the Linuxulator.</p>
<p>At present, the linux emulation layer project has
implemented all of the necessary system calls for supporting glibc
2.20, and more:</p>
<ul>
<li>Using native threads for emulating Linux threads</li>
<li>Implemented VDSO support, including DWARF for signal
trampolines, which are needed for stack unwinding in
<tt>pthread_cancel()</tt></li>
<li>Implemented the "vsyscall hack", used by some
Linux-based distributions, including CentOS 6</li>
<li>Implemented the <tt>epoll()</tt> system call
emulation</li>
<li>Many bugs were fixed</li>
</ul>
<p>The project's code is located in the FreeBSD Project's
Subversion repository, at <tt>base/user/dchagin/lemul</tt> (a
little bit old). To facilitate merging the improvements back to
head, several patches have been placed on reviews.FreeBSD.org with
the tag <tt>#lemul</tt>. Nearly half of the patches have already
been approved by &a.emaste; and &a.trasz;.</p>
</body>
<help>
<task>
<p>Review and merge the lemul branch to head within the next
month or two.</p>
</task>
<task>
<p>Implement native and Linuxulator <tt>inotify()</tt>
system calls.</p>
</task>
<task>
<p>Implement the <tt>ptrace()</tt> system call for the x86_64
Linuxulator.</p>
</task>
<task>
<p>Implement the <tt>signalfd()</tt> and <tt>timerfd</tt>
system calls for the Linuxulator.</p>
</task>
<task>
<p>Extend <tt>xucred</tt> support, which is required for
many Linux applications.</p>
</task>
</help>
</project>
</report>