summaryrefslogtreecommitdiff
path: root/hurd/STATUS
blob: ceb0a865d0bbd04b4095e106b8daea04248c470d (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
Status of Hurd support in libc.  Last updated 22 Nov 1994.
Roland McGrath <roland@gnu.ai.mit.edu>

Everything not noted below is implemented, most of it tested.  There are
various very small things unfinished or thought to be perhaps wrong
throughout the code, marked by comments containing `XXX'.


* Signals and job control work, but are a very hairy area.
  There are various ways the signal thread can block and fail
  to respond when the program is losing badly.

* We are not sure about possible races between setpgrp (A, pgrp) from
  process B vs process A receiving proc_newids.

* The rest of libc (stdio et al) is not safe for multithreaded programs.
  mutex locks should be added to various things.

* Recovery from faults in the signal thread is not implemented yet.

* longjmp needs to clean up reply port, intr_port; needs thought about.

* Cooperation with cthreads is not finished.  If you link with cthreads,
  libc internal code still does not use real condition variables.
  sigsuspend currently does a busy wait where it should use a condition.
  Signal state is per kernel thread; for unwired cthreads it should be per
  cthread instead.

* sigaltstack/sigstack do not really work: the signal stack needs thread
  variables and cthread data set up, which is not done.

* malloc is a kludge.

* Nothing uses mapped io.  Eventually stdio and read/write/seek should.  I
  have written a little code for this, but it is far from finished.

* Resource limits do not really work; current implementation is patchy and
  inconsistent.

* libc implicitly uses some environment variables.  This is a security
  problem for setuid exec.  Probably crt0 should remove the variables from
  the environment if setuid.

* The miscellaneous msg.defs calls are only partially implemented.

* The default SIGINFO handler needs to be written.

* File locking is not implemented; the RPC interface is not there yet.

* The current getitimer/setitimer implementation is a kludge.

* mmap cannot do MAP_NOEXTEND.

* Unimplemented calls (from the 4.4 system call list):
acct
fstatfs
getfh
getfsstat
getrusage
madvise
mincore
mount
msync
profil
recvmsg
revoke
sendmsg
setpriority
sstk
statfs
swapon
unmount