diff options
author | Siddhesh Poyarekar <siddhesh@redhat.com> | 2012-05-15 09:41:27 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@redhat.com> | 2012-05-15 09:41:57 +0530 |
commit | 439bf404b8fa125cf950dc1aa37838702c5353ea (patch) | |
tree | da5913033bcfa18987da0aabf69ad99b751772a3 /nptl/sysdeps | |
parent | 2949684c162a4413e42249d6b2ad554cb468b5be (diff) | |
download | glibc-439bf404b8fa125cf950dc1aa37838702c5353ea.tar.gz glibc-439bf404b8fa125cf950dc1aa37838702c5353ea.tar.xz glibc-439bf404b8fa125cf950dc1aa37838702c5353ea.zip |
Allow a single-threaded program to cancel itself
There is nothing in the POSIX specification to disallow a single-threaded program from cancelling itself, so we forcibly enable multiple_threads to allow the next available cancellation point in the thread to run. Also added additional tests to cover various cancellation scenarios.
Diffstat (limited to 'nptl/sysdeps')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c b/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c index 7fffb0d808..459b8cf7c0 100644 --- a/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c +++ b/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c @@ -20,6 +20,9 @@ #ifndef NOT_IN_libc # ifndef TLS_MULTIPLE_THREADS_IN_TCB +/* Variable set to a nonzero value either if more than one thread runs or ran, + or if a single-threaded process is trying to cancel itself. See + nptl/descr.h for more context on the single-threaded process case. */ int __libc_multiple_threads attribute_hidden; # endif #endif |