fix formatting for previous commit;
Adjust entry for linux-DVB support
This commit is contained in:
parent
4e23ae9366
commit
f08789c7e1
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/www/; revision=33946
1 changed files with 58 additions and 38 deletions
|
@ -15,7 +15,7 @@ Ideas//EN"
|
|||
<ideas>
|
||||
<cvs:keywords xmlns:cvs="http://www.FreeBSD.org/XML/CVS" version="1.0">
|
||||
<cvs:keyword name="freebsd">
|
||||
$FreeBSD: www/en/projects/ideas/ideas.xml,v 1.111 2009/03/14 10:18:18 rwatson Exp $
|
||||
$FreeBSD: www/en/projects/ideas/ideas.xml,v 1.112 2009/03/15 14:13:43 luigi Exp $
|
||||
</cvs:keyword>
|
||||
</cvs:keywords>
|
||||
|
||||
|
@ -556,37 +556,51 @@ these buses to be a subclass of this new base class.</p>
|
|||
</desc>
|
||||
</idea>
|
||||
|
||||
<idea id="kernel-linuxemu" class="soc">
|
||||
<title>Kernel support for linux device drivers</title>
|
||||
<idea id="kernel-dvb" class="soc">
|
||||
<title>Kernel support for linux DVB device drivers</title>
|
||||
|
||||
<desc>
|
||||
<p><strong>Technical contact</strong>: <a href="mailto:luigi@FreeBSD.org">Luigi Rizzo</a></p>
|
||||
|
||||
<p>Recently, a project was started to compile linux device drivers
|
||||
on FreeBSD through an in-kernel emulation layer, which
|
||||
<p>In early 2007 we started a project was started to support the
|
||||
building of linux device drivers on FreeBSD.
|
||||
This was done through an in-kernel emulation layer, which
|
||||
implements part of the linux kernel API on top of the FreeBSD
|
||||
kernel API. The initial implementation was good enough to
|
||||
support a few USB webcam drivers, and is documented
|
||||
<a
|
||||
href="http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html">here</a>.</p>
|
||||
href="http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html">here</a>.
|
||||
The code is actually available as a port, devel/linux-kmod-compat,
|
||||
and a popular driver that uses this infrastructure is
|
||||
multimedia/linux-gspca-kmod .
|
||||
</p>
|
||||
<p>We would like to use a similar approach to add support
|
||||
for DVB devices, which are widely supported in Linux
|
||||
but not in FreeBSD. In particular we expect the project to provide,
|
||||
within the FreeBSD kernel, enough of linux compatibility to build
|
||||
the core components of the drivers/media/ linux kernel, and then
|
||||
a few device drivers including one for a PCI DVB card (e.g.
|
||||
saa7134-based).
|
||||
</p>
|
||||
|
||||
<p>The goal of this project is to extend this emulation layer
|
||||
to cover more of the linux kernel API. Two areas that need
|
||||
further work are the API used by network/communication device drivers (e.g.
|
||||
many USB wired and wireless device drivers; telephony cards), and the API used
|
||||
by memory-mapped devices and drivers (e.g. analog or DVB video
|
||||
acquisition cards, both USB and PCI).</p>
|
||||
|
||||
<p>A Summer of Code applicant would be required to choose a significant set of
|
||||
extensions to the existing work (e.g. one of those indicated
|
||||
above), and select at least two linux device drivers to be
|
||||
ported to FreeBSD using the newly implemented functions.</p>
|
||||
|
||||
<p>Before the start of the project a Summer of Code applicant is expected to
|
||||
have studied the above URL and understood the emulation technique
|
||||
used, and to have/acquire access to at least some of the hardware
|
||||
involved, so that actual functionality tests can be performed
|
||||
in addition to the compile tests.</p>
|
||||
<p>Before the start of the project, a Summer of Code applicant is expected to
|
||||
i) become familiar with the approach used by linux-kmod-compat;
|
||||
ii) set up a proper test environment, with a couple of DVB devices
|
||||
supported by linux, and a working linux installation so that
|
||||
one can compare results;
|
||||
iii) become familiar with the architecture of the linux code in
|
||||
drivers/media.
|
||||
<br/>
|
||||
Probably the attention should be focused in PCI devices, because
|
||||
at this stage the USB stack is in a transition phase and would
|
||||
pose some additional difficulties.
|
||||
</p>
|
||||
<p>
|
||||
Expected results are a working porting infrastructure, a working
|
||||
linux-dvb-kmod device driver, and a working application to demonstrate
|
||||
that the driver is working as expected. We suggest to look at
|
||||
"kaffeine" for which a FreeBSD port already exists.
|
||||
</p>
|
||||
</desc>
|
||||
</idea>
|
||||
|
||||
|
@ -722,23 +736,20 @@ href="http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html">here</a>.</p>
|
|||
</desc>
|
||||
</idea>
|
||||
|
||||
<idea id="psched">
|
||||
<idea id="psched" class="soc">
|
||||
<title>Geom-based Disk Schedulers</title>
|
||||
|
||||
<desc>
|
||||
<p><strong>Technical contact</strong>: <a
|
||||
href="mailto:luigi@freebsd.org">Luigi Rizzo</a></p>
|
||||
<p><strong>References</strong>: <a
|
||||
href="http://wiki.freebsd.org/moin.cgi/Hybrid">The Pluggable Disk
|
||||
Schedulers SoC project</a>, <a
|
||||
href="http://www.happyemi.org/hybrid/">Patches</a></p>
|
||||
<p>In a 2005 GSoC project, "Pluggable Disk Schedulers", Emiliano
|
||||
Mennucci explored the feasibility of pluggable disk schedulers
|
||||
for FreeBSD. The project was successful, but we could not explore
|
||||
certain approaches (e.g. "anticipation", where requests are delayed
|
||||
hoping that some future ones can served without a seek) due to
|
||||
architectural limitations the kernel had at the time.
|
||||
<p>
|
||||
</p>
|
||||
<p>
|
||||
Since then, the GEOM infrastructure has become available on FreeBSD
|
||||
for interacting with disk I/O requests. GEOM has enabled us to
|
||||
work on disk schedulers in a much more flexible way, allowing a
|
||||
|
@ -746,7 +757,8 @@ href="http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html">here</a>.</p>
|
|||
Fabio Checconi, we have developed a prototype
|
||||
implementation of some anticipatory schedulers, see
|
||||
<a href="http://info.iet.unipi.it/~luigi/FreeBSD/#geom_sched">GEOM_SCHED</a>.
|
||||
<p>
|
||||
</p>
|
||||
<p>
|
||||
GEOM_SCHED works within the geom layer, i.e. above the device driver
|
||||
where queueing of requests may actually occur. The way GEOM_SCHED
|
||||
does scheduling is by limiting the number of outstanding requests
|
||||
|
@ -757,18 +769,26 @@ href="http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html">here</a>.</p>
|
|||
(as it needs to be replicated in all drivers) but it may be
|
||||
an interesting thing to do e.g. for some popular device drivers
|
||||
such as ATA.
|
||||
<p>
|
||||
</p>
|
||||
<p>
|
||||
The proposed SoC work can address one or more of the following
|
||||
aspects:
|
||||
i) implement suitable classifiers for
|
||||
disk requests; ii) implement techniques for the auto-tuning of
|
||||
the scheduler parameters; iii) measure the performance implications
|
||||
<ul>
|
||||
<li>implement suitable classifiers for disk requests;</li>
|
||||
<li>implement techniques for the auto-tuning of
|
||||
the scheduler parameters;</li>
|
||||
<li>measure the performance implications
|
||||
of doing scheduling above the device driver, and possibly design
|
||||
and implement a suitable mechanism to push the GEOM_SCHED
|
||||
module within the device driver itself.
|
||||
<p>
|
||||
Ultimately, we expect to end up with a production quality subsystem
|
||||
for use in FreeBSD.
|
||||
module within the device driver itself.</li>
|
||||
</ul>
|
||||
Ultimately, we expect to end up with a production quality subsystem
|
||||
for use in FreeBSD.
|
||||
</p>
|
||||
<p><strong>References</strong>: <a
|
||||
href="http://wiki.freebsd.org/moin.cgi/Hybrid">The Pluggable Disk
|
||||
Schedulers SoC project</a>, <a
|
||||
href="http://www.happyemi.org/hybrid/">Patches</a></p>
|
||||
|
||||
<p><strong>Requirements</strong>:</p>
|
||||
<ul>
|
||||
|
|
Loading…
Reference in a new issue