Add linuxulator
Heavily edited by me and may have some content errors. Approved by: hrs (mentor, blanket)
This commit is contained in:
parent
58d47f81ef
commit
1cca9d4377
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46183
1 changed files with 78 additions and 0 deletions
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue