fix formatting for previous commit;

Adjust entry for linux-DVB support
This commit is contained in:
Luigi Rizzo 2009-03-15 14:36:31 +00:00
parent 4e23ae9366
commit f08789c7e1
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/www/; revision=33946

View file

@ -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>