* Michael Kerrisk (man-pages) <mtk.manpages@xxxxxxxxx>, 2020-04-20, 10:33:
"A signal may be generated (and thus pending) for a process as a whole (e."
"g., when sent using B<kill>(2)) or for a specific thread (e.g., certain "
"signals, such as B<SIGSEGV> and B<SIGFPE>, generated as a consequence of "
"executing a specific machine-language instruction are thread directed, as "
"are signals targeted at a specific thread using B<pthread_kill>(3)). A "
"process-directed signal may be delivered to any one of the threads that does "
"not currently have the signal blocked. If more than one of the threads has "
"the signal unblocked, then the kernel chooses an arbitrary thread to which "
"to deliver the signal."
I can't find the text referred to. I think you may be working
with an older version of the page. Can you please check.
In 3b9d44099f234e8e, the long sentence was replaced with this paragraph:
"A signal may be process-directed or thread-directed. A process-directed
signal is one that is targeted at (and thus pending for) the process as
a whole. A signal may be process-directed because it was generated by
the kernel for reasons other than a hardware exception, or because it
was sent using kill(2) or sigqueue(3). A thread-directed signals is one
that is targeted at a specific thread. A signal may be thread-directed
because it was generated as a consequence of executing a specific
machine-language instruction that triggered a hardware exception (e.g.,
SIGSEGV for an invalid memory access, or SIGFPE for a math error), or
because it was it was targeted at a specific thread using interfaces
such as tgkill(2) or pthread_kill(3).
--
Jakub Wilk