mirror of git://sourceware.org/git/glibc.git
hurd: Document how EINTR should be handled in critical sections
* hurd/hurd/signal.h (_hurd_critical_section_lock): Document how EINTR should be handled.
This commit is contained in:
parent
477e739b32
commit
e87d8ada29
|
@ -1,3 +1,8 @@
|
||||||
|
2019-03-16 Samuel Thibault <samuel.thibault@ens-lyon.org>
|
||||||
|
|
||||||
|
* hurd/hurd/signal.h (_hurd_critical_section_lock): Document how EINTR
|
||||||
|
should be handled.
|
||||||
|
|
||||||
2019-03-15 Joseph Myers <joseph@codesourcery.com>
|
2019-03-15 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/syscall-names.list: Update kernel
|
* sysdeps/unix/sysv/linux/syscall-names.list: Update kernel
|
||||||
|
|
|
@ -168,7 +168,13 @@ extern int _hurd_core_limit;
|
||||||
A critical section is a section of code which cannot safely be interrupted
|
A critical section is a section of code which cannot safely be interrupted
|
||||||
to run a signal handler; for example, code that holds any lock cannot be
|
to run a signal handler; for example, code that holds any lock cannot be
|
||||||
interrupted lest the signal handler try to take the same lock and
|
interrupted lest the signal handler try to take the same lock and
|
||||||
deadlock result. */
|
deadlock result.
|
||||||
|
|
||||||
|
As a consequence, a critical section will see its RPCs return EINTR, even if
|
||||||
|
SA_RESTART is set! In that case, the critical section should be left, so
|
||||||
|
that the handler can run, and the whole critical section be tried again, to
|
||||||
|
avoid unexpectingly exposing EINTR to the application.
|
||||||
|
*/
|
||||||
|
|
||||||
extern void *_hurd_critical_section_lock (void);
|
extern void *_hurd_critical_section_lock (void);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue