summaryrefslogtreecommitdiff
path: root/signal/TODO
blob: 1148abb39092ee7c73303eeaf21e438d4fd6480c (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
Unimplemented Functionality
---------------------------

We don't support interruptible functions.  That is, if a signal is
delivered when a thread is in e.g. the write system call, then the
write function should be interrupted and return EINTR when the signal
handler is finished.  To realize this behavior, we could have a thread
local interruptible flag and a setjmp buffer.  A function that is
interruptible would fill the jump buffer and set the interruptible
flag.  If a signal comes in and the interruptible flag is set, rather
than resuming the thread, we longjmp to the buffer.

If a signal action has set the SA_SIGINFO, the third argument must be
a pointer to a ucontext describing the thread's interrupted state;
this implementation passes NULL.  This isn't as bad as it sounds as
the the ucontext family of functions are marked obsolete in SUSv3 with
the advisory that any use of them should be replaced by the use of
pthread functionality (cf. makecontext rationale).

stop and continue signals are not implemented (as we need to stop all
threads, this requires being in bed with libpthread).

Implementation is not yet cancellation-safe.

There are not even stubs for sighold, sigingore, sigpause, sigrelse,
however, according to posix: "Use of any of these functions is
unspecified in a multi-threaded process."

Implement sigtimedwait, sigqueue.