summaryrefslogtreecommitdiff
path: root/microkernel/mach/gnumach/projects/clean_up_the_code.mdwn
blob: 89a27b011b28ed86d668135b6760543af18b5c07 (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
131
132
[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2010, 2012 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]]."]]"""]]

[[!tag open_issue_gnumach]]

# Restructure the tree in a sane way

Merge `linux/src` and `linux/dev`.  But only if using a sane RCS, so leave it
as-is for now.  Also, a bunch of (header) files from there may probably be
discarded.


# Remove dead files from the GNU Mach source tree

For *exported* files (via `make install`), the plan is to first stick some
`#error This file is scheduled for removal.  Write to <bug-hurd@gnu.org> if you
have a reason to have it kept available.` into them, and then actually remove
them after some months.

For some of the internal header files (containing function prototypes and the
like), it might actually be useful to use them.  (And then get rid of a bunch
of `extern ...` statements in other files.)

This following list was assembled by putting such a `#error ...` line into each
of the `gnumach-1-branch`'s header files (exported and internal; save the
`linux/` ones (only internal) for simplicity), and then trying to build GNU
Mach until this would succeed again (by removing offending `#error ...`s), and
afterwards using the set of exported files for building a cross toolchain
(again still removing offending `#error ...`s).  A very crude and imprecise
method.

So, additionally to the list given below, there may actually be a bunch of
further files (also exported ones) that serve no real value, but are being
`#include`d through one way or another.

* [[!source_gnumach-1-branch ddb/db_expr.h]]

    Currently used, but copyright violation?  Rewrite?

* [[!source_gnumach-1-branch ddb/db_print.h]]

    Copyright violation?  Currently unused, but could be used in principle (or
    be rewritten, to avoid the copyright oddity).

* [[!source_gnumach-1-branch ddb/tr.h]]

    Copyright violation.  Unused.  Remove.

* [[!source_gnumach-1-branch device/dev_master.h]]

    Might be usable for SMP?  Remove otherwise.

* [[!source_gnumach-1-branch i386/i386/kttd_machdep.h]]

* [[!source_gnumach-1-branch i386/i386/sched_param.h]]

* [[!source_gnumach-1-branch i386/include/mach/i386/cthreads.h]]

    Was probably once exported, but is no longer.

* [[!source_gnumach-1-branch i386/include/mach/i386/ioccom.h]]

    Exported.

* [[!source_gnumach-1-branch include/device/audio_status.h]]

    Exported.

* [[!source_gnumach-1-branch include/device/tape_status.h]]

    Exported.

* [[!source_gnumach-1-branch include/mach/alert.h]]

    Exported.

* [[!source_gnumach-1-branch include/mach/boot.h]]

    Exported.

* [[!source_gnumach-1-branch include/mach/macro_help.h]]

    Exported.

* [[!source_gnumach-1-branch include/mach/multiboot.h]]

    Exported.

* [[!source_gnumach-1-branch include/mach/profil.h]]

    Exported.

* [[!source_gnumach-1-branch include/mach/profilparam.h]]

    Exported.

* [[!source_gnumach-1-branch include/mach/exec/a.out.h]]

    Exported.

* [[!source_gnumach-1-branch include/mach_debug/pc_info.h]]

    Currently not exported, but was probably once meant to be.

* [[!source_gnumach-1-branch kern/act.h]]

* [[!source_gnumach-1-branch kern/refcount.h]]

* [[!source_gnumach-1-branch kern/shuttle.h]]


# Remove dead functions, variables, etc. from source files


# Rewrite ugly code


# IRC, freenode, #hurd, 2012-09-06

    <mcsim> hello. Why size parameter of rpc device_read has type
      "mach_msg_type_number_t *"? Why not just "vm_size_t *"?
    <mcsim> this parameter has name data_count
    <braunr> that's one of the reasons mach is confusing
    <braunr> i can't really tell you why, it's messy :/