summaryrefslogtreecommitdiff
path: root/community/gsoc/project_ideas
diff options
context:
space:
mode:
Diffstat (limited to 'community/gsoc/project_ideas')
-rw-r--r--community/gsoc/project_ideas/driver_glue_code.mdwn36
-rw-r--r--community/gsoc/project_ideas/dtrace.mdwn11
-rw-r--r--community/gsoc/project_ideas/file_locking.mdwn13
-rw-r--r--community/gsoc/project_ideas/physical_memory_management.mdwn58
-rw-r--r--community/gsoc/project_ideas/sound.mdwn12
-rw-r--r--community/gsoc/project_ideas/tcp_ip_stack.mdwn5
6 files changed, 100 insertions, 35 deletions
diff --git a/community/gsoc/project_ideas/driver_glue_code.mdwn b/community/gsoc/project_ideas/driver_glue_code.mdwn
index 0f921590..1771756e 100644
--- a/community/gsoc/project_ideas/driver_glue_code.mdwn
+++ b/community/gsoc/project_ideas/driver_glue_code.mdwn
@@ -1,5 +1,5 @@
-[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2016 Free Software
-Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2016, 2017, 2018 Free
+Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -27,22 +27,24 @@ This is [[!GNU_Savannah_task 5488]].
[[open issues/user-space device drivers]].
[[open issues/device drivers and io systems]].
-The most promising approach for getting newer drivers seems to be [[DDE]]:
+The most promising approach for getting newer drivers seems to be the [[Rump_Kernel]]:
it already does the hard work of providing an environment
where the foreign drivers can run,
and offers the additional benefit of being externally maintained.
-DDE also offers the necessary facilities
+Rump also offers the necessary facilities
for running all drivers in separate userspace processes,
which is more desirable than drivers running in the microkernel.
-[[Zheng Da|zhengda]] has already done considerable work on this.
+Robert Millan worked on a port of the Rump kernel, which allowed to run a sound
+driver in userland. This work now needs to be extended.
+
+[[Zheng Da|zhengda]] has already done considerable work on a similar approach, using [[DDE]]
The basic framework for using DDE in the Hurd is present,
and network card drivers are already working very well.
However, this work isn't fully integrated in the Hurd yet.
The additional kernel interfaces that were created for this
-are still prototypes, and will need to be reworked.
-Also, there is no build system for automatically compiling
-all Linux network card drivers in one go.
+are still prototypes, and will need to be reworked. This environment can be
+reused and polished for Rump.
Other types of drivers are missing so far.
Support for IDE drivers has been partially implemented,
@@ -51,13 +53,10 @@ To fully replace the old in-kernel drivers,
further infrastructure will be necessary
to make userspace disk drivers usable for the root filesystem.
-Some other subsystems are missing or incomplete in DDE itself,
-and will require additional work that is not specific to the Hurd implementation.
-
The goal of this task is to fix at least one of the mentioned major shortcomings:
rework the kernel interfaces;
-provide a streamlined build system for the drivers;
-finish IDE support;
+polish the rumpkernel changes;
+componentize the rumpkernel elements for sound;
or implement support for some other subsystem.
<!-- should probably provide separate task descriptions for each... -->
@@ -69,13 +68,4 @@ such as memory management for example.
Possible mentors: Justus Winter (teythoon), Samuel Thibault (youpi)
-Exercise: Get one of the not yet integrated Linux network card drivers to work.
-(Note: This should be straightforward,
-once you have the framework properly built and set up...)
-
----
-
-
-# 2016-02-14, Justus Winter
-
-`s/dde/rump/g` of course.
+Exercise: Install and run the current rumpkernel library (librump0) and the corresponding mplayer, get it to run.
diff --git a/community/gsoc/project_ideas/dtrace.mdwn b/community/gsoc/project_ideas/dtrace.mdwn
index 6261c03e..f7aeb6e8 100644
--- a/community/gsoc/project_ideas/dtrace.mdwn
+++ b/community/gsoc/project_ideas/dtrace.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2008, 2009, 2011 Free Software Foundation,
+[[!meta copyright="Copyright © 2008, 2009, 2011, 2018 Free Software Foundation,
Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
@@ -13,6 +13,13 @@ License|/fdl]]."]]"""]]
[[!tag open_issue_gnumach]]
+[[!template id=highlight text="""/!\ Obsolete /!\
+
+---
+
+This is no longer valid as a Google Summer of Code project."""]]
+
+
One of the main problems of the current Hurd implementation is very poor
[[open_issues/performance]]. While we have a bunch of ideas what could cause the performance
problems, these are mostly just guesses. Better understanding what really
@@ -57,6 +64,4 @@ the student will have to get familiar with GNU Mach.
Some understanding of other aspects of the Hurd will also be required,
depending on the exact nature of the profiling/debugging performed.
-Possible mentors: Samuel Thibault (youpi)
-
Exercise: Use the existing probes to perform some simple measurement.
diff --git a/community/gsoc/project_ideas/file_locking.mdwn b/community/gsoc/project_ideas/file_locking.mdwn
index ebb322f1..a368a7a8 100644
--- a/community/gsoc/project_ideas/file_locking.mdwn
+++ b/community/gsoc/project_ideas/file_locking.mdwn
@@ -1,5 +1,5 @@
-[[!meta copyright="Copyright © 2008, 2009, 2012, 2014 Free Software Foundation,
-Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2012, 2014, 2018 Free Software
+Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -11,6 +11,13 @@ License|/fdl]]."]]"""]]
[[!meta title="Fix and Complete File Locking Support"]]
+[[!template id=highlight text="""/!\ Obsolete /!\
+
+---
+
+This is no longer valid as a Google Summer of Code project."""]]
+
+
Over the years, [[UNIX]] has acquired a host of different file locking mechanisms.
Some of them work on the Hurd, while others are buggy or only partially
implemented. This breaks many applications.
@@ -26,8 +33,6 @@ locking works on the Hurd. Only general programming skills are required.
A preliminary patch is [[!GNU_Savannah_patch 332 desc="available"]].
-Possible mentors: Samuel Thibault (youpi)
-
Exercise: Find one of the existing issues, either by looking at the task/bug
filed on [[open_issues/file_locking]], on
trackers on savannah, or by trying things out yourself; and take a go at it.
diff --git a/community/gsoc/project_ideas/physical_memory_management.mdwn b/community/gsoc/project_ideas/physical_memory_management.mdwn
new file mode 100644
index 00000000..af360507
--- /dev/null
+++ b/community/gsoc/project_ideas/physical_memory_management.mdwn
@@ -0,0 +1,58 @@
+[[!meta copyright="Copyright © 2015, 2016, 2018 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!meta title="Physical memory management"]]
+
+[[!template id=highlight text="""/!\ Obsolete /!\
+
+---
+
+This is no longer valid as a Google Summer of Code project; it was basically
+done by Richard."""]]
+
+
+GNU Mach is currently suffering from severe limitations caused by the way
+it manages physical memory. For example, since it requires pages to be mapped
+in kernel space in order to be used, the maximum amount of usable physical
+memory is currently around 800MB (or 1.8GB if a 2/2 split is set). And
+because the page allocator is unable to easily return blocks of contiguous
+pages, the kernel has to use virtual memory to provide contiguity.
+But the kernel virtual space is separate from the direct mapping of
+physical memory, so the larger it is, the less physical pages available.
+The size of the kernel space is currently around 200MB, with around 100MB
+for kernel objects. This small size prevents the system from achieving
+scalability, since a panic occurs when the kernel is unable to allocate
+a kernel object such as a port. In addition, the kernel uses mainly tables
+to store IPC rights. When a table is full, it is enlarged through a kernel
+specific version of realloc(). When a file system starts managing many
+files (e.g. because some of their content is cached in physical memory),
+these tables can get big enough to make realloc() fail because of
+fragmentation.
+
+The goal of this project is to make as much physical memory available as
+possible for both the kernel and applications, by rewriting the page
+allocator into a buddy allocator to support contiguous block allocations,
+using it directly instead of virtual memory as the backend of the slab
+allocator for kernel objects, and, if time allows it, transform IPC right
+tables (e.g. into radix trees) and get rid of realloc().
+
+This project requires a good understanding of virtual memory (both physical
+mappings at the MMU level and virtual mappings at the VM level), and strong
+skills in C programming. Note that some work has already been done in the
+X15 project about this, and can be reused as a reference.
+
+Useful links :
+
+ * <https://www.sceen.net/mapping-physical-memory-directly/>
+
+ * <http://git.sceen.net/rbraun/x15.git/>
+
+ * <https://git.sceen.net/rbraun/librbraun.git/plain/rdxtree.h>
diff --git a/community/gsoc/project_ideas/sound.mdwn b/community/gsoc/project_ideas/sound.mdwn
index 8411831b..1a33ae2c 100644
--- a/community/gsoc/project_ideas/sound.mdwn
+++ b/community/gsoc/project_ideas/sound.mdwn
@@ -1,4 +1,5 @@
-[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2018 Free Software Foundation,
+Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -10,6 +11,13 @@ is included in the section entitled
[[!meta title="Sound Support"]]
+[[!template id=highlight text="""/!\ Obsolete /!\
+
+---
+
+This is no longer valid as a Google Summer of Code project."""]]
+
+
The Hurd presently has no sound support. Fixing this, [[!GNU_Savannah_task
5485]], requires two steps: the first is to port some other kernel's drivers to
[[GNU_Mach|microkernel/mach/gnumach]] so we can get access to actual sound
@@ -31,8 +39,6 @@ to come up with an appropriate design.
Another option would be to evaluate whether a driver that is completely running
in user-space is feasible. <!-- TODO. Elaborate. -->
-Possible mentors: Samuel Thibault (youpi)
-
Exercise: This project requires kernel (driver framework) hacking as well as
some Hurd server hacking; so the exercise should involve either of these, or
even both. You could for example port some newer driver to run in the existing
diff --git a/community/gsoc/project_ideas/tcp_ip_stack.mdwn b/community/gsoc/project_ideas/tcp_ip_stack.mdwn
index 331336ac..f86dcf72 100644
--- a/community/gsoc/project_ideas/tcp_ip_stack.mdwn
+++ b/community/gsoc/project_ideas/tcp_ip_stack.mdwn
@@ -1,4 +1,5 @@
-[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2017 Free Software Foundation,
+Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -34,7 +35,7 @@ make such a split later on feasible.
This is [[!GNU_Savannah_task 5469]].
-Possible mentors: zhengda
+Possible mentors: youpi
Exercise: You could try making some improvement to the existing pfinet
implementation; or you could work towards running some existing userspace