summaryrefslogtreecommitdiff
path: root/microkernel/mach/gnumach/projects.mdwn
blob: f4ef192ad15d478095f76a6dae5ada52db745907 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2011 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]]."]]"""]]

This page is a place to keep track of ideas about things that may be improved
in GNU Mach, so that it'll evolve to a reliable microkernel for The Hurd, both
in terms of stability and performance.  If you find anything missing here,
please feel free to add a entry with a short description.

If you want to help with any of the task (thanks!), please send a mail to
*[[mailing lists/bug-hurd]]* stating what task you wish to work on,
so that no duplicate efforts end up.

# Active Branches

  * `gnumach-1-branch` is the main branch.

  * `gnumach-1-branch-Xen-branch` is a branch created by Samuel Thibault for
    working on a [[ports/Xen]] port.

  * `gnumach-1-branch-gdb-branch` is a branch created by Michael Casadevall for
    working on [[GDB_stubs]].


# Task List

  * [[Clean_up_the_code]]

  * [[Open Issues|tag/open_issue_gnumach]]

  * Update the core architecture and drivers

      * Check what NetBSD, FreeBSD and Linux do with their host specific code
        (i486, PPC, Sparc, ...).  And if it might be wise to take that and use
        it in GNU Mach.  There is no need to worry about purely internal API's,
        but the external ones shouldn't require any major changes.

      * Write a list of all functions provided by the host dependant code in
        GNU Mach that gets used in the non-host specific code (kernel, IPC and
        VM).

      * Once we have decided what the new internal API should look like, make a
        list of the new API and the old one, and try to make things as
        compatible as possible, but not at the expense of anything.

  * Implement Migrating Threads

      * Migrating Threads (MT) could improve IPC performance and making easier
        the work of the scheduler.  For more information, check
        <http://www.usenix.org/publications/library/proceedings/sf94/ford.html>

  * Improve the external pagers interface

      * Implement [[open_issues/performance/io_system/read-ahead]] (huge I/O
        improvements expected).

      * Making this interface synchronous should improve I/O performance
        significantly, without (almost) any drawbacks (we also get some
        advantage from MT's).

      * Implement more paging eviction policies, so they fit better with usual
        behaviour of the pagers.

      * Implement resource accounting for external pagers.

  * VM

      * Put it on user level (?)

      * Clean up the mess.

      * Provide a fast way to read/write from/to a memory object.

      * Simplify/normalise the code.

  * Simplify the IPC Semantics

      * There are a lot of things in GNU Mach's IPC that we don't need.  Track
        down those things, and get rid of them without requiring many changes
        in the Hurd (the changes will affect MiG, but that is OK).

  * Temporary mappings for Client-Server memory transfers

      * Extend Mach's IPC to provide some kind of object which can represent a
        range of memory that can temporarily be mapped into the servers address
        space for sending/receiving data.  This would allow us to avoid
        excessive memory copies.

      * Find a new way to work with unaligned memory.

  * GDB remote debugging support

      * Implement support for GDB debugging via serial line and/or network.
        Maybe this can be done together with the host-specific work above.

        See [[GDB_stubs]].

  * Make it run as a [[UNIX]]/Linux executable.

      * Neal:

            <neal> here's a fun project: port the mach interface to Linux
            <neal> (e.g., via kernel modifications)
            <neal> or, to posix/glibc
            <neal> (mmap, some minimal ptrace, etc.)

      * From the [Hurd bits at
        sourceforge.net](http://sourceforge.net/projects/hurd):
        <http://hurd.cvs.sourceforge.net/hurd/gnumach-otop/>, started by John
        Tobey.  Last time touched in 2003.  Status completely unknown.

          * [README](http://hurd.cvs.sourceforge.net/hurd/gnumach-otop/README?view=markup)


# Wish List

  * Interface for userspace non-critical drivers.

  * Sound Support

  * WLAN support (ipw2200) with WEP/WPA

  * ACPI support