Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2011-04-29 22:29:26 +0400
committerCorinna Vinschen <corinna@vinschen.de>2011-04-29 22:29:26 +0400
commit37e680bb6b5b2ffc33231e074f9649504b26dae8 (patch)
tree18067e67d0bbc3b3ba533e214c0f4a36cc814d3e /winsup/cygwin/thread.cc
parent5735d5f6f4cc65cb8afcbd7da83165b6e9cbc5d8 (diff)
* thread.cc: Update comment listing cancellation points per POSIX.
Diffstat (limited to 'winsup/cygwin/thread.cc')
-rw-r--r--winsup/cygwin/thread.cc474
1 files changed, 301 insertions, 173 deletions
diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc
index 1eab04d55..a9e5f77c0 100644
--- a/winsup/cygwin/thread.cc
+++ b/winsup/cygwin/thread.cc
@@ -562,181 +562,309 @@ pthread::cancel ()
ResumeThread (win32_obj_id);
return 0;
-/*
- TODO: insert pthread_testcancel into the required functions
- the required function list is: *indicates done, X indicates not present in cygwin.
-aio_suspend ()
-*close ()
-*creat ()
-fcntl ()
-fsync ()
-getmsg ()
-getpmsg ()
-lockf ()
-mq_receive ()
-mq_send ()
-msgrcv ()
-msgsnd ()
-msync ()
-nanosleep ()
-open ()
-*pause ()
-poll ()
-pread ()
-*pthread_cond_timedwait ()
-*pthread_cond_wait ()
-*pthread_join ()
-*pthread_testcancel ()
-putmsg ()
-putpmsg ()
-pwrite ()
-read ()
-readv ()
-select ()
-*sem_wait ()
-*sigpause ()
-*sigsuspend ()
-sigtimedwait ()
-sigwait ()
-sigwaitinfo ()
-*sleep ()
-*system ()
-tcdrain ()
-*usleep ()
-*wait ()
-*wait3()
-waitid ()
-*waitpid ()
-write ()
-writev ()
-
-the optional list is:
-catclose ()
-catgets ()
-catopen ()
-closedir ()
-closelog ()
-ctermid ()
-dbm_close ()
-dbm_delete ()
-dbm_fetch ()
-dbm_nextkey ()
-dbm_open ()
-dbm_store ()
-dlclose ()
-dlopen ()
-endgrent ()
-endpwent ()
-endutxent ()
-fclose ()
-fcntl ()
-fflush ()
-fgetc ()
-fgetpos ()
-fgets ()
-fgetwc ()
-fgetws ()
-fopen ()
-fprintf ()
-fputc ()
-fputs ()
-fputwc ()
-fputws ()
-fread ()
-freopen ()
-fscanf ()
-fseek ()
-fseeko ()
-fsetpos ()
-ftell ()
-ftello ()
-ftw ()
-fwprintf ()
-fwrite ()
-fwscanf ()
-getc ()
-getc_unlocked ()
-getchar ()
-getchar_unlocked ()
-getcwd ()
-getdate ()
-getgrent ()
-getgrgid ()
-getgrgid_r ()
-getgrnam ()
-getgrnam_r ()
-getlogin ()
-getlogin_r ()
-getpwent ()
-*getpwnam ()
-*getpwnam_r ()
-*getpwuid ()
-*getpwuid_r ()
-gets ()
-getutxent ()
-getutxid ()
-getutxline ()
-getw ()
-getwc ()
-getwchar ()
-getwd ()
-glob ()
-iconv_close ()
-iconv_open ()
-ioctl ()
-lseek ()
-mkstemp ()
-nftw ()
-opendir ()
-openlog ()
-pclose ()
-perror ()
-popen ()
-printf ()
-putc ()
-putc_unlocked ()
-putchar ()
-putchar_unlocked ()
-puts ()
-pututxline ()
-putw ()
-putwc ()
-putwchar ()
-readdir ()
-readdir_r ()
-remove ()
-rename ()
-rewind ()
-rewinddir ()
-scanf ()
-seekdir ()
-semop ()
-setgrent ()
-setpwent ()
-setutxent ()
-strerror ()
-syslog ()
-tmpfile ()
-tmpnam ()
-ttyname ()
-ttyname_r ()
-ungetc ()
-ungetwc ()
-unlink ()
-vfprintf ()
-vfwprintf ()
-vprintf ()
-vwprintf ()
-wprintf ()
-wscanf ()
-
-Note, that for fcntl (), for any value of the cmd argument.
-
-And we must not introduce cancellation points anywhere else that's part of the posix or
-opengroup specs.
- */
}
+/* TODO: Insert pthread_testcancel into the required functions.
+
+ Here are the lists of required and optional functions per POSIX.1-2001
+ and POSIX.1-2008. A start (*) indicates that the Cygwin function already
+ is a cancellation point (aka "calls pthread_testcancel").
+
+ Required cancellation points:
+
+ accept ()
+ aio_suspend ()
+ clock_nanosleep ()
+ * close ()
+ connect ()
+ * creat ()
+ fcntl () F_SETLKW
+ fdatasync ()
+ fsync ()
+ getmsg ()
+ getpmsg ()
+ lockf () F_LOCK
+ * mq_receive ()
+ * mq_send ()
+ * mq_timedreceive ()
+ * mq_timedsend ()
+ msgrcv ()
+ msgsnd ()
+ msync ()
+ nanosleep ()
+ open ()
+ openat ()
+ * pause ()
+ poll ()
+ pread ()
+ pselect ()
+ * pthread_cond_timedwait ()
+ * pthread_cond_wait ()
+ * pthread_join ()
+ * pthread_testcancel ()
+ putmsg ()
+ putpmsg ()
+ pwrite ()
+ read ()
+ readv ()
+ recv ()
+ recvfrom ()
+ recvmsg ()
+ select ()
+ * sem_timedwait ()
+ * sem_wait ()
+ send ()
+ sendmsg ()
+ sendto ()
+ * sigpause ()
+ * sigsuspend ()
+ sigtimedwait ()
+ sigwait ()
+ sigwaitinfo ()
+ * sleep ()
+ * system ()
+ tcdrain ()
+ * usleep ()
+ * wait ()
+ * wait3()
+ waitid ()
+ * waitpid ()
+ write ()
+ writev ()
+
+ Optional cancellation points:
+
+ access ()
+ asctime ()
+ asctime_r ()
+ catclose ()
+ catgets ()
+ catopen ()
+ chmod ()
+ chown ()
+ closedir ()
+ closelog ()
+ ctermid ()
+ ctime ()
+ ctime_r ()
+ dbm_close ()
+ dbm_delete ()
+ dbm_fetch ()
+ dbm_nextkey ()
+ dbm_open ()
+ dbm_store ()
+ dlclose ()
+ dlopen ()
+ dprintf ()
+ endgrent ()
+ endhostent ()
+ endnetent ()
+ endprotoent ()
+ endpwent ()
+ endservent ()
+ endutxent ()
+ faccessat ()
+ fchmod ()
+ fchmodat ()
+ fchown ()
+ fchownat ()
+ fclose ()
+ fcntl () (any value)
+ fflush ()
+ fgetc ()
+ fgetpos ()
+ fgets ()
+ fgetwc ()
+ fgetws ()
+ fmtmsg ()
+ fopen ()
+ fpathconf ()
+ fprintf ()
+ fputc ()
+ fputs ()
+ fputwc ()
+ fputws ()
+ fread ()
+ freopen ()
+ fscanf ()
+ fseek ()
+ fseeko ()
+ fsetpos ()
+ fstat ()
+ fstatat ()
+ ftell ()
+ ftello ()
+ ftw ()
+ futimens ()
+ fwprintf ()
+ fwrite ()
+ fwscanf ()
+ getaddrinfo ()
+ getc ()
+ getc_unlocked ()
+ getchar ()
+ getchar_unlocked ()
+ getcwd ()
+ getdate ()
+ getdelim ()
+ getgrent ()
+ getgrgid ()
+ getgrgid_r ()
+ getgrnam ()
+ getgrnam_r ()
+ gethostbyaddr ()
+ gethostbyname ()
+ gethostent ()
+ gethostid ()
+ gethostname ()
+ getline ()
+ getlogin ()
+ getlogin_r ()
+ getnameinfo ()
+ getnetbyaddr ()
+ getnetbyname ()
+ getnetent ()
+ getopt () (if opterr is nonzero)
+ getprotobyname ()
+ getprotobynumber ()
+ getprotoent ()
+ getpwent ()
+ * getpwnam ()
+ * getpwnam_r ()
+ * getpwuid ()
+ * getpwuid_r ()
+ gets ()
+ getservbyname ()
+ getservbyport ()
+ getservent ()
+ getutxent ()
+ getutxid ()
+ getutxline ()
+ getwc ()
+ getwchar ()
+ getwd ()
+ glob ()
+ iconv_close ()
+ iconv_open ()
+ ioctl ()
+ link ()
+ linkat ()
+ lio_listio ()
+ localtime ()
+ localtime_r ()
+ lockf ()
+ lseek ()
+ lstat ()
+ mkdir ()
+ mkdirat ()
+ mkdtemp ()
+ mkfifo ()
+ mkfifoat ()
+ mknod ()
+ mknodat ()
+ mkstemp ()
+ mktime ()
+ nftw ()
+ opendir ()
+ openlog ()
+ pathconf ()
+ pclose ()
+ perror ()
+ popen ()
+ posix_fadvise ()
+ posix_fallocate ()
+ posix_madvise ()
+ posix_openpt ()
+ posix_spawn ()
+ posix_spawnp ()
+ posix_trace_clear ()
+ posix_trace_close ()
+ posix_trace_create ()
+ posix_trace_create_withlog ()
+ posix_trace_eventtypelist_getnext_id ()
+ posix_trace_eventtypelist_rewind ()
+ posix_trace_flush ()
+ posix_trace_get_attr ()
+ posix_trace_get_filter ()
+ posix_trace_get_status ()
+ posix_trace_getnext_event ()
+ posix_trace_open ()
+ posix_trace_rewind ()
+ posix_trace_set_filter ()
+ posix_trace_shutdown ()
+ posix_trace_timedgetnext_event ()
+ posix_typed_mem_open ()
+ printf ()
+ psiginfo ()
+ psignal ()
+ pthread_rwlock_rdlock ()
+ pthread_rwlock_timedrdlock ()
+ pthread_rwlock_timedwrlock ()
+ pthread_rwlock_wrlock ()
+ putc ()
+ putc_unlocked ()
+ putchar ()
+ putchar_unlocked ()
+ puts ()
+ pututxline ()
+ putwc ()
+ putwchar ()
+ readdir ()
+ readdir_r ()
+ readlink ()
+ readlinkat ()
+ remove ()
+ rename ()
+ renameat ()
+ rewind ()
+ rewinddir ()
+ scandir ()
+ scanf ()
+ seekdir ()
+ semop ()
+ setgrent ()
+ sethostent ()
+ setnetent ()
+ setprotoent ()
+ setpwent ()
+ setservent ()
+ setutxent ()
+ sigpause ()
+ stat ()
+ strerror ()
+ strerror_r ()
+ strftime ()
+ symlink ()
+ symlinkat ()
+ sync ()
+ syslog ()
+ tmpfile ()
+ tmpnam ()
+ ttyname ()
+ ttyname_r ()
+ tzset ()
+ ungetc ()
+ ungetwc ()
+ unlink ()
+ unlinkat ()
+ utime ()
+ utimensat ()
+ utimes ()
+ vdprintf ()
+ vfprintf ()
+ vfwprintf ()
+ vprintf ()
+ vwprintf ()
+ wcsftime ()
+ wordexp ()
+ wprintf ()
+ wscanf ()
+
+ An implementation may also mark other functions not specified in the
+ standard as cancellation points. In particular, an implementation is
+ likely to mark any nonstandard function that may block as a
+ cancellation point. */
+
void
pthread::testcancel ()
{