mirror of https://github.com/mkerrisk/man-pages
pthreads.7: Add section on cancellation points
This section includes a list of the functions that must and may be cancellation points. Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
parent
da8dbaa525
commit
ffe8c4ae77
404
man7/pthreads.7
404
man7/pthreads.7
|
@ -21,7 +21,7 @@
|
||||||
.\" Formatted or processed versions of this manual, if unaccompanied by
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\"
|
.\"
|
||||||
.TH PTHREADS 7 2008-11-07 "Linux" "Linux Programmer's Manual"
|
.TH PTHREADS 7 2008-11-10 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
pthreads \- POSIX threads
|
pthreads \- POSIX threads
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
@ -233,6 +233,408 @@ POSIX.1-2008 removes ecvt(), fcvt(), gcvt(), gethostbyname(),
|
||||||
and gethostbyaddr() from the above list
|
and gethostbyaddr() from the above list
|
||||||
(because those functions are removed from the standard), and adds
|
(because those functions are removed from the standard), and adds
|
||||||
strerror() and system().
|
strerror() and system().
|
||||||
|
.SS Cancellation Points
|
||||||
|
POSIX.1 specifies that certain functions must,
|
||||||
|
and certain other functions may, be cancellation points.
|
||||||
|
If a thread is cancelable, its cancelability type is deferred,
|
||||||
|
and a cancellation request is pending for the thread,
|
||||||
|
then the thread is canceled when it calls a function
|
||||||
|
that is a cancellation point.
|
||||||
|
|
||||||
|
The following functions are required to be cancellation points by
|
||||||
|
POSIX.1-2001 and/or POSIX.1-2008:
|
||||||
|
|
||||||
|
.in +4n
|
||||||
|
.nf
|
||||||
|
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() [Added in POSIX.1-2008]
|
||||||
|
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() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
|
||||||
|
sigsuspend()
|
||||||
|
sigtimedwait()
|
||||||
|
sigwait()
|
||||||
|
sigwaitinfo()
|
||||||
|
sleep()
|
||||||
|
system()
|
||||||
|
tcdrain()
|
||||||
|
usleep() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
|
||||||
|
wait()
|
||||||
|
waitid()
|
||||||
|
waitpid()
|
||||||
|
write()
|
||||||
|
writev()
|
||||||
|
.fi
|
||||||
|
.in
|
||||||
|
|
||||||
|
The following functions may be cancellation points according to
|
||||||
|
POSIX.1-2001 and/or POSIX.1-2008:
|
||||||
|
|
||||||
|
.in +4n
|
||||||
|
.nf
|
||||||
|
access()
|
||||||
|
asctime()
|
||||||
|
asctime_r()
|
||||||
|
catclose()
|
||||||
|
catgets()
|
||||||
|
catopen()
|
||||||
|
chmod() [Added in POSIX.1-2008]
|
||||||
|
chown() [Added in POSIX.1-2008]
|
||||||
|
closedir()
|
||||||
|
closelog()
|
||||||
|
ctermid()
|
||||||
|
ctime()
|
||||||
|
ctime_r()
|
||||||
|
dbm_close()
|
||||||
|
dbm_delete()
|
||||||
|
dbm_fetch()
|
||||||
|
dbm_nextkey()
|
||||||
|
dbm_open()
|
||||||
|
dbm_store()
|
||||||
|
dlclose()
|
||||||
|
dlopen()
|
||||||
|
dprintf() [Added in POSIX.1-2008]
|
||||||
|
endgrent()
|
||||||
|
endhostent()
|
||||||
|
endnetent()
|
||||||
|
endprotoent()
|
||||||
|
endpwent()
|
||||||
|
endservent()
|
||||||
|
endutxent()
|
||||||
|
faccessat() [Added in POSIX.1-2008]
|
||||||
|
fchmod() [Added in POSIX.1-2008]
|
||||||
|
fchmodat() [Added in POSIX.1-2008]
|
||||||
|
fchown() [Added in POSIX.1-2008]
|
||||||
|
fchownat() [Added in POSIX.1-2008]
|
||||||
|
fclose()
|
||||||
|
fcntl() (for any value of cmd argument)
|
||||||
|
fflush()
|
||||||
|
fgetc()
|
||||||
|
fgetpos()
|
||||||
|
fgets()
|
||||||
|
fgetwc()
|
||||||
|
fgetws()
|
||||||
|
fmtmsg()
|
||||||
|
fopen()
|
||||||
|
fpathconf()
|
||||||
|
fprintf()
|
||||||
|
fputc()
|
||||||
|
fputs()
|
||||||
|
fputwc()
|
||||||
|
fputws()
|
||||||
|
fread()
|
||||||
|
freopen()
|
||||||
|
fscanf()
|
||||||
|
fseek()
|
||||||
|
fseeko()
|
||||||
|
fsetpos()
|
||||||
|
fstat()
|
||||||
|
fstatat() [Added in POSIX.1-2008]
|
||||||
|
ftell()
|
||||||
|
ftello()
|
||||||
|
ftw()
|
||||||
|
futimens() [Added in POSIX.1-2008]
|
||||||
|
fwprintf()
|
||||||
|
fwrite()
|
||||||
|
fwscanf()
|
||||||
|
getaddrinfo()
|
||||||
|
getc()
|
||||||
|
getc_unlocked()
|
||||||
|
getchar()
|
||||||
|
getchar_unlocked()
|
||||||
|
getcwd()
|
||||||
|
getdate()
|
||||||
|
getdelim() [Added in POSIX.1-2008]
|
||||||
|
getgrent()
|
||||||
|
getgrgid()
|
||||||
|
getgrgid_r()
|
||||||
|
getgrnam()
|
||||||
|
getgrnam_r()
|
||||||
|
gethostbyaddr() [SUSv3 only (function removed in POSIX.1-2008)]
|
||||||
|
gethostbyname() [SUSv3 only (function removed in POSIX.1-2008)]
|
||||||
|
gethostent()
|
||||||
|
gethostid()
|
||||||
|
gethostname()
|
||||||
|
getline() [Added in POSIX.1-2008]
|
||||||
|
getlogin()
|
||||||
|
getlogin_r()
|
||||||
|
getnameinfo()
|
||||||
|
getnetbyaddr()
|
||||||
|
getnetbyname()
|
||||||
|
getnetent()
|
||||||
|
getopt() (if opterr is non-zero)
|
||||||
|
getprotobyname()
|
||||||
|
getprotobynumber()
|
||||||
|
getprotoent()
|
||||||
|
getpwent()
|
||||||
|
getpwnam()
|
||||||
|
getpwnam_r()
|
||||||
|
getpwuid()
|
||||||
|
getpwuid_r()
|
||||||
|
gets()
|
||||||
|
getservbyname()
|
||||||
|
getservbyport()
|
||||||
|
getservent()
|
||||||
|
getutxent()
|
||||||
|
getutxid()
|
||||||
|
getutxline()
|
||||||
|
getwc()
|
||||||
|
getwchar()
|
||||||
|
getwd() [SUSv3 only (function removed in POSIX.1-2008)]
|
||||||
|
glob()
|
||||||
|
iconv_close()
|
||||||
|
iconv_open()
|
||||||
|
ioctl()
|
||||||
|
link()
|
||||||
|
linkat() [Added in POSIX.1-2008]
|
||||||
|
lio_listio() [Added in POSIX.1-2008]
|
||||||
|
localtime()
|
||||||
|
localtime_r()
|
||||||
|
lockf() [Added in POSIX.1-2008]
|
||||||
|
lseek()
|
||||||
|
lstat()
|
||||||
|
mkdir() [Added in POSIX.1-2008]
|
||||||
|
mkdirat() [Added in POSIX.1-2008]
|
||||||
|
mkdtemp() [Added in POSIX.1-2008]
|
||||||
|
mkfifo() [Added in POSIX.1-2008]
|
||||||
|
mkfifoat() [Added in POSIX.1-2008]
|
||||||
|
mknod() [Added in POSIX.1-2008]
|
||||||
|
mknodat() [Added in POSIX.1-2008]
|
||||||
|
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() [Added in POSIX.1-2008]
|
||||||
|
psignal() [Added in POSIX.1-2008]
|
||||||
|
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() [Added in POSIX.1-2008]
|
||||||
|
readlinkat() [Added in POSIX.1-2008]
|
||||||
|
remove()
|
||||||
|
rename()
|
||||||
|
renameat() [Added in POSIX.1-2008]
|
||||||
|
rewind()
|
||||||
|
rewinddir()
|
||||||
|
scandir() [Added in POSIX.1-2008]
|
||||||
|
scanf()
|
||||||
|
seekdir()
|
||||||
|
semop()
|
||||||
|
setgrent()
|
||||||
|
sethostent()
|
||||||
|
setnetent()
|
||||||
|
setprotoent()
|
||||||
|
setpwent()
|
||||||
|
setservent()
|
||||||
|
setutxent()
|
||||||
|
sigpause() [Added in POSIX.1-2008]
|
||||||
|
stat()
|
||||||
|
strerror()
|
||||||
|
strerror_r()
|
||||||
|
strftime()
|
||||||
|
symlink()
|
||||||
|
symlinkat() [Added in POSIX.1-2008]
|
||||||
|
sync()
|
||||||
|
syslog()
|
||||||
|
tmpfile()
|
||||||
|
tmpnam()
|
||||||
|
ttyname()
|
||||||
|
ttyname_r()
|
||||||
|
tzset()
|
||||||
|
ungetc()
|
||||||
|
ungetwc()
|
||||||
|
unlink()
|
||||||
|
unlinkat() [Added in POSIX.1-2008]
|
||||||
|
utime() [Added in POSIX.1-2008]
|
||||||
|
utimensat() [Added in POSIX.1-2008]
|
||||||
|
utimes() [Added in POSIX.1-2008]
|
||||||
|
vdprintf() [Added in POSIX.1-2008]
|
||||||
|
vfprintf()
|
||||||
|
vfwprintf()
|
||||||
|
vprintf()
|
||||||
|
vwprintf()
|
||||||
|
wcsftime()
|
||||||
|
wordexp()
|
||||||
|
wprintf()
|
||||||
|
wscanf()
|
||||||
|
.fi
|
||||||
|
.in
|
||||||
|
|
||||||
|
An implementation may also mark other functions
|
||||||
|
not specified in the standard as cancellation points.
|
||||||
|
In particular, an implementation is likely to mark
|
||||||
|
any non-standard function that may block as a cancellation point.
|
||||||
|
(This includes most functions that can touch files.)
|
||||||
|
.\" So, scanning "cancellation point" comments in the glibc 2.8 header
|
||||||
|
.\" files, it looks as though at least the following non-standard
|
||||||
|
.\" functions are cancellation points:
|
||||||
|
.\" endnetgrent
|
||||||
|
.\" endspent
|
||||||
|
.\" epoll_pwait
|
||||||
|
.\" epoll_wait
|
||||||
|
.\" fcloseall
|
||||||
|
.\" fdopendir
|
||||||
|
.\" fflush_unlocked
|
||||||
|
.\" fgetc_unlocked
|
||||||
|
.\" fgetgrent
|
||||||
|
.\" fgetgrent_r
|
||||||
|
.\" fgetpwent
|
||||||
|
.\" fgetpwent_r
|
||||||
|
.\" fgets_unlocked
|
||||||
|
.\" fgetspent
|
||||||
|
.\" fgetspent_r
|
||||||
|
.\" fgetwc_unlocked
|
||||||
|
.\" fgetws_unlocked
|
||||||
|
.\" fputc_unlocked
|
||||||
|
.\" fputs_unlocked
|
||||||
|
.\" fputwc_unlocked
|
||||||
|
.\" fputws_unlocked
|
||||||
|
.\" fread_unlocked
|
||||||
|
.\" fwrite_unlocked
|
||||||
|
.\" gai_suspend
|
||||||
|
.\" getaddrinfo_a
|
||||||
|
.\" getdate_r
|
||||||
|
.\" getgrent_r
|
||||||
|
.\" getgrouplist
|
||||||
|
.\" gethostbyaddr_r
|
||||||
|
.\" gethostbyname2
|
||||||
|
.\" gethostbyname2_r
|
||||||
|
.\" gethostbyname_r
|
||||||
|
.\" gethostent_r
|
||||||
|
.\" getnetbyaddr_r
|
||||||
|
.\" getnetbyname_r
|
||||||
|
.\" getnetent_r
|
||||||
|
.\" getnetgrent
|
||||||
|
.\" getnetgrent_r
|
||||||
|
.\" getprotobyname_r
|
||||||
|
.\" getprotobynumber_r
|
||||||
|
.\" getprotoent_r
|
||||||
|
.\" getpw
|
||||||
|
.\" getpwent_r
|
||||||
|
.\" getservbyname_r
|
||||||
|
.\" getservbyport_r
|
||||||
|
.\" getservent_r
|
||||||
|
.\" getspent
|
||||||
|
.\" getspent_r
|
||||||
|
.\" getspnam
|
||||||
|
.\" getspnam_r
|
||||||
|
.\" getutmp
|
||||||
|
.\" getutmpx
|
||||||
|
.\" getw
|
||||||
|
.\" getwc_unlocked
|
||||||
|
.\" getwchar_unlocked
|
||||||
|
.\" initgroups
|
||||||
|
.\" innetgr
|
||||||
|
.\" mkostemp
|
||||||
|
.\" mkostemp64
|
||||||
|
.\" mkstemp64
|
||||||
|
.\" ppoll
|
||||||
|
.\" pthread_timedjoin_np
|
||||||
|
.\" putgrent
|
||||||
|
.\" putpwent
|
||||||
|
.\" putspent
|
||||||
|
.\" putw
|
||||||
|
.\" putwc_unlocked
|
||||||
|
.\" putwchar_unlocked
|
||||||
|
.\" rcmd
|
||||||
|
.\" rcmd_af
|
||||||
|
.\" rexec
|
||||||
|
.\" rexec_af
|
||||||
|
.\" rresvport
|
||||||
|
.\" rresvport_af
|
||||||
|
.\" ruserok
|
||||||
|
.\" ruserok_af
|
||||||
|
.\" setnetgrent
|
||||||
|
.\" setspent
|
||||||
|
.\" sgetspent
|
||||||
|
.\" sgetspent_r
|
||||||
|
.\" updwtmpx
|
||||||
|
.\" utmpxname
|
||||||
|
.\" vfscanf
|
||||||
|
.\" vfwscanf
|
||||||
|
.\" vscanf
|
||||||
|
.\" vsyslog
|
||||||
|
.\" vwscanf
|
||||||
.SS "Compiling on Linux"
|
.SS "Compiling on Linux"
|
||||||
On Linux, programs that use the Pthreads API should be compiled using
|
On Linux, programs that use the Pthreads API should be compiled using
|
||||||
.IR "cc \-pthread" .
|
.IR "cc \-pthread" .
|
||||||
|
|
Loading…
Reference in New Issue