mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-01 03:50:28 +08:00
fdb7df230d
This patch adds pthread_getname_np and pthread_setname_np. These were added to glibc in 2.12[1] and are also present in some form on NetBSD and several UNIXes. The code is based on NetBSD's implementation with changes to better match Linux behaviour. Implementation quirks: * pthread_setname_np with a NULL pointer segfaults (as linux) * pthread_setname_np returns ERANGE for names longer than 16 characters (as linux) * pthread_getname_np with a NULL pointer returns EFAULT (as linux) * pthread_getname_np with a buffer length of less than 16 returns ERANGE (as linux) * pthread_getname_np truncates the thread name to fit the buffer length. This guarantees success even when the default thread name is longer than 16 characters, but means there is no way to discover the actual length of the thread name. (Linux always truncates the thread name to 16 characters) * Changing program_invocation_short_name changes the default thread name (on linux, it has no effect on the default thread name) I'll leave it up to you to decide if any of these matter. This is implemented via class pthread_attr to make it easier to add pthread_attr_[gs]etname_np (present in NetBSD and some UNIXes) should it ever be added to Linux (or we decide we want it anyway). [1] https://sourceware.org/git/?p=glibc.git;a=blob;f=NEWS
1666 lines
31 KiB
XML
1666 lines
31 KiB
XML
<?xml version="1.0" encoding='UTF-8'?>
|
|
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
|
|
|
<chapter id="compatibility" xmlns:xi="http://www.w3.org/2001/XInclude">
|
|
<title>Compatibility</title>
|
|
|
|
<sect1 id="std-susv4"><title>System interfaces compatible with the Single Unix Specification, Version 4:</title>
|
|
|
|
<para>Note that the core of the Single Unix Specification, Version 4 is
|
|
also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
|
|
|
|
<screen>
|
|
FD_CLR
|
|
FD_ISSET
|
|
FD_SET
|
|
FD_ZERO
|
|
_Exit
|
|
_exit
|
|
_longjmp
|
|
_setjmp
|
|
_tolower
|
|
_toupper
|
|
a64l
|
|
abort
|
|
abs
|
|
accept
|
|
access
|
|
acos
|
|
acosf
|
|
acosh
|
|
acoshf
|
|
acoshl
|
|
acosl
|
|
alarm
|
|
alphasort
|
|
asctime
|
|
asctime_r
|
|
asin
|
|
asinf
|
|
asinh
|
|
asinhf
|
|
asinhl
|
|
asinl
|
|
atan
|
|
atan2
|
|
atan2f
|
|
atan2l
|
|
atanf
|
|
atanh
|
|
atanhf
|
|
atanhl
|
|
atanl
|
|
atexit
|
|
atof
|
|
atoff
|
|
atoi
|
|
atol
|
|
atoll
|
|
basename (see chapter "Implementation Notes")
|
|
bind
|
|
bsearch
|
|
btowc
|
|
cabs
|
|
cabsf
|
|
cabsl
|
|
cacos
|
|
cacosf
|
|
cacosh
|
|
cacoshf
|
|
cacoshl
|
|
cacosl
|
|
calloc
|
|
carg
|
|
cargf
|
|
cargl
|
|
casin
|
|
casinf
|
|
casinh
|
|
casinhf
|
|
casinhl
|
|
casinl
|
|
catan
|
|
catanf
|
|
catanh
|
|
catanhf
|
|
catanhl
|
|
catanl
|
|
catclose (available in external "catgets" library)
|
|
catgets (available in external "catgets" library)
|
|
catopen (available in external "catgets" library)
|
|
cbrt
|
|
cbrtf
|
|
cbrtl
|
|
ccos
|
|
ccosf
|
|
ccosh
|
|
ccoshf
|
|
ccoshl
|
|
ccosl
|
|
ceil
|
|
ceilf
|
|
ceill
|
|
cexp
|
|
cexpf
|
|
cexpl
|
|
cfgetispeed
|
|
cfgetospeed
|
|
cfsetispeed
|
|
cfsetospeed
|
|
chdir
|
|
chmod
|
|
chown
|
|
cimag
|
|
cimagf
|
|
cimagl
|
|
clearerr
|
|
clock
|
|
clock_getcpuclockid
|
|
clock_getres
|
|
clock_gettime
|
|
clock_nanosleep (see chapter "Implementation Notes")
|
|
clock_settime (see chapter "Implementation Notes")
|
|
clog
|
|
clogf
|
|
clogl
|
|
close
|
|
closedir
|
|
closelog
|
|
confstr
|
|
conj
|
|
conjf
|
|
conjl
|
|
connect
|
|
copysign
|
|
copysignf
|
|
copysignl
|
|
cos
|
|
cosf
|
|
cosh
|
|
coshf
|
|
coshl
|
|
cosl
|
|
cpow
|
|
cpowf
|
|
cpowl
|
|
cproj
|
|
cprojf
|
|
cprojl
|
|
creal
|
|
crealf
|
|
creall
|
|
creat
|
|
crypt (available in external "crypt" library)
|
|
csin
|
|
csinf
|
|
csinh
|
|
csinhf
|
|
csinhl
|
|
csinl
|
|
csqrt
|
|
csqrtf
|
|
csqrtl
|
|
ctan
|
|
ctanf
|
|
ctanh
|
|
ctanhf
|
|
ctanhl
|
|
ctanl
|
|
ctermid
|
|
ctime
|
|
ctime_r
|
|
daylight
|
|
dbm_clearerr (available in external "libgdbm" library)
|
|
dbm_close (available in external "libgdbm" library)
|
|
dbm_delete (available in external "libgdbm" library)
|
|
dbm_error (available in external "libgdbm" library)
|
|
dbm_fetch (available in external "libgdbm" library)
|
|
dbm_firstkey (available in external "libgdbm" library)
|
|
dbm_nextkey (available in external "libgdbm" library)
|
|
dbm_open (available in external "libgdbm" library)
|
|
dbm_store (available in external "libgdbm" library)
|
|
difftime
|
|
dirfd
|
|
dirname
|
|
div
|
|
dlclose
|
|
dlerror
|
|
dlopen
|
|
dlsym
|
|
dprintf
|
|
drand48
|
|
dup
|
|
dup2
|
|
duplocale
|
|
encrypt (available in external "crypt" library)
|
|
endgrent
|
|
endhostent
|
|
endprotoent
|
|
endpwent
|
|
endservent
|
|
endutxent
|
|
environ
|
|
erand48
|
|
erf
|
|
erfc
|
|
erfcf
|
|
erfcl
|
|
erff
|
|
erfl
|
|
errno
|
|
execl
|
|
execle
|
|
execlp
|
|
execv
|
|
execve
|
|
execvp
|
|
exit
|
|
exp
|
|
exp2
|
|
exp2f
|
|
exp2l
|
|
expf
|
|
expl
|
|
expm1
|
|
expm1f
|
|
expm1l
|
|
fabs
|
|
fabsf
|
|
fabsl
|
|
faccessat
|
|
fchdir
|
|
fchmod
|
|
fchmodat
|
|
fchown
|
|
fchownat
|
|
fclose
|
|
fcntl (see chapter "Implementation Notes")
|
|
fdatasync
|
|
fdim
|
|
fdimf
|
|
fdiml
|
|
fdopen
|
|
fdopendir
|
|
feclearexcept
|
|
fegetenv
|
|
fegetexceptflag
|
|
fegetround
|
|
feholdexcept
|
|
feof
|
|
feraiseexcept
|
|
ferror
|
|
fesetenv
|
|
fesetexceptflag
|
|
fesetround
|
|
fetestexcept
|
|
feupdateenv
|
|
fexecve
|
|
fflush
|
|
ffs
|
|
fgetc
|
|
fgetpos
|
|
fgets
|
|
fgetwc
|
|
fgetws
|
|
fileno
|
|
flockfile
|
|
floor
|
|
floorf
|
|
floorl
|
|
fma
|
|
fmaf
|
|
fmal
|
|
fmax
|
|
fmaxf
|
|
fmaxl
|
|
fmemopen
|
|
fmin
|
|
fminf
|
|
fminl
|
|
fmod
|
|
fmodf
|
|
fmodl
|
|
fnmatch
|
|
fopen
|
|
fork
|
|
fpathconf
|
|
fpclassify (see chapter "Implementation Notes")
|
|
fprintf
|
|
fputc
|
|
fputs
|
|
fputwc
|
|
fputws
|
|
fread
|
|
free
|
|
freeaddrinfo
|
|
freelocale
|
|
freopen
|
|
frexp
|
|
frexpf
|
|
frexpl
|
|
fscanf
|
|
fseek
|
|
fseeko
|
|
fsetpos
|
|
fstat
|
|
fstatat
|
|
fstatvfs
|
|
fsync
|
|
ftell
|
|
ftello
|
|
ftok
|
|
ftruncate
|
|
ftrylockfile
|
|
ftw
|
|
funlockfile
|
|
futimens
|
|
fwide
|
|
fwprintf
|
|
fwrite
|
|
fwscanf
|
|
gai_strerror
|
|
getaddrinfo
|
|
getc
|
|
getc_unlocked
|
|
getchar
|
|
getchar_unlocked
|
|
getcwd
|
|
getdelim
|
|
getdomainname
|
|
getegid
|
|
getenv
|
|
geteuid
|
|
getgid
|
|
getgrent
|
|
getgrgid
|
|
getgrgid_r
|
|
getgrnam
|
|
getgrnam_r
|
|
getgroups
|
|
gethostid
|
|
gethostname
|
|
getitimer (see chapter "Implementation Notes")
|
|
getline
|
|
getlogin
|
|
getlogin_r
|
|
getnameinfo
|
|
getopt
|
|
getpeername
|
|
getpgid
|
|
getpgrp
|
|
getpid
|
|
getppid
|
|
getpriority
|
|
getprotobyname
|
|
getprotobynumber
|
|
getprotoent
|
|
getpwent
|
|
getpwnam
|
|
getpwnam_r
|
|
getpwuid
|
|
getpwuid_r
|
|
getrlimit
|
|
getrusage
|
|
gets
|
|
getservbyname
|
|
getservbyport
|
|
getservent
|
|
getsid
|
|
getsockname
|
|
getsockopt
|
|
getsubopt
|
|
gettimeofday
|
|
getuid
|
|
getutxent
|
|
getutxid
|
|
getutxline
|
|
getwc
|
|
getwchar
|
|
glob
|
|
globfree
|
|
gmtime
|
|
gmtime_r
|
|
grantpt
|
|
hcreate
|
|
hdestroy
|
|
hsearch
|
|
htonl
|
|
htons
|
|
hypot
|
|
hypotf
|
|
hypotl
|
|
iconv (available in external "libiconv" library)
|
|
iconv_close (available in external "libiconv" library)
|
|
iconv_open (available in external "libiconv" library)
|
|
if_freenameindex
|
|
if_indextoname
|
|
if_nameindex
|
|
if_nametoindex
|
|
ilogb
|
|
ilogbf
|
|
ilogbl
|
|
imaxabs
|
|
imaxdiv
|
|
inet_addr
|
|
inet_ntoa
|
|
inet_ntop
|
|
inet_pton
|
|
initstate
|
|
insque
|
|
ioctl
|
|
isalnum
|
|
isalnum_l
|
|
isalpha
|
|
isalpha_l
|
|
isascii
|
|
isatty
|
|
isblank
|
|
isblank_l
|
|
iscntrl
|
|
iscntrl_l
|
|
isdigit
|
|
isdigit_l
|
|
isfinite (see chapter "Implementation Notes")
|
|
isgraph
|
|
isgraph_l
|
|
isgreater (see chapter "Implementation Notes")
|
|
isgreaterequal (see chapter "Implementation Notes")
|
|
isinf (see chapter "Implementation Notes")
|
|
isless
|
|
islessequal (see chapter "Implementation Notes")
|
|
islessgreater (see chapter "Implementation Notes")
|
|
islower
|
|
islower_l
|
|
isnan (see chapter "Implementation Notes")
|
|
isnormal (see chapter "Implementation Notes")
|
|
isprint
|
|
isprint_l
|
|
ispunct
|
|
ispunct_l
|
|
isspace
|
|
isspace_l
|
|
isunordered (see chapter "Implementation Notes")
|
|
isupper
|
|
isupper_l
|
|
iswalnum
|
|
iswalnum_l
|
|
iswalpha
|
|
iswalpha_l
|
|
iswblank
|
|
iswblank_l
|
|
iswcntrl
|
|
iswcntrl_l
|
|
iswctype
|
|
iswctype_l
|
|
iswdigit
|
|
iswdigit_l
|
|
iswgraph
|
|
iswgraph_l
|
|
iswlower
|
|
iswlower_l
|
|
iswprint
|
|
iswprint_l
|
|
iswpunct
|
|
iswpunct_l
|
|
iswspace
|
|
iswspace_l
|
|
iswupper
|
|
iswupper_l
|
|
iswxdigit
|
|
iswxdigit_l
|
|
isxdigit
|
|
isxdigit_l
|
|
j0
|
|
j1
|
|
jn
|
|
jrand48
|
|
kill
|
|
killpg
|
|
l64a
|
|
labs
|
|
lchown
|
|
lcong48
|
|
ldexp
|
|
ldexpf
|
|
ldexpl
|
|
ldiv
|
|
lfind
|
|
lgamma
|
|
lgammaf
|
|
lgammal
|
|
link
|
|
linkat
|
|
listen
|
|
llabs
|
|
lldiv
|
|
llrint
|
|
llrintf
|
|
llrintl
|
|
llround
|
|
llroundf
|
|
llroundl
|
|
localeconv
|
|
localtime
|
|
localtime_r
|
|
lockf (see chapter "Implementation Notes")
|
|
log
|
|
log10
|
|
log10f
|
|
log10l
|
|
log1p
|
|
log1pf
|
|
log1pl
|
|
log2
|
|
log2f
|
|
log2l
|
|
logb
|
|
logbf
|
|
logbl
|
|
logf
|
|
logl
|
|
longjmp
|
|
lrand48
|
|
lrint
|
|
lrintf
|
|
lrintl
|
|
lround
|
|
lroundf
|
|
lroundl
|
|
lsearch
|
|
lseek
|
|
lstat
|
|
malloc
|
|
mblen
|
|
mbrlen
|
|
mbrtowc
|
|
mbsinit
|
|
mbsnrtowcs
|
|
mbsrtowcs
|
|
mbstowcs
|
|
mbtowc
|
|
memccpy
|
|
memchr
|
|
memcmp
|
|
memcpy
|
|
memmove
|
|
memset
|
|
mkdir
|
|
mkdirat
|
|
mkdtemp
|
|
mkfifo
|
|
mkfifoat
|
|
mknod
|
|
mknodat
|
|
mkstemp
|
|
mktime
|
|
mlock
|
|
mmap
|
|
modf
|
|
modff
|
|
modfl
|
|
mprotect
|
|
mq_close
|
|
mq_getattr
|
|
mq_notify
|
|
mq_open
|
|
mq_receive
|
|
mq_send
|
|
mq_setattr
|
|
mq_timedreceive
|
|
mq_timedsend
|
|
mq_unlink
|
|
mrand48
|
|
msgctl (see chapter "Implementation Notes")
|
|
msgget (see chapter "Implementation Notes")
|
|
msgrcv (see chapter "Implementation Notes")
|
|
msgsnd (see chapter "Implementation Notes")
|
|
msync
|
|
munlock
|
|
munmap
|
|
nan
|
|
nanf
|
|
nanl
|
|
nanosleep
|
|
nearbyint
|
|
nearbyintf
|
|
nearbyintl
|
|
newlocale
|
|
nextafter
|
|
nextafterf
|
|
nextafterl
|
|
nexttoward
|
|
nexttowardf
|
|
nexttowardl
|
|
nftw
|
|
nice
|
|
nl_langinfo
|
|
nl_langinfo_l
|
|
nrand48
|
|
ntohl
|
|
ntohs
|
|
open
|
|
open_memstream
|
|
open_wmemstream
|
|
openat
|
|
opendir
|
|
openlog
|
|
optarg
|
|
opterr
|
|
optind
|
|
optopt
|
|
pathconf
|
|
pause
|
|
pclose
|
|
perror
|
|
pipe
|
|
poll
|
|
popen
|
|
posix_fadvise
|
|
posix_fallocate
|
|
posix_madvise
|
|
posix_memalign
|
|
posix_openpt
|
|
posix_spawn
|
|
posix_spawn_file_actions_addclose
|
|
posix_spawn_file_actions_adddup2
|
|
posix_spawn_file_actions_addopen
|
|
posix_spawn_file_actions_destroy
|
|
posix_spawn_file_actions_init
|
|
posix_spawnattr_destroy
|
|
posix_spawnattr_getflags
|
|
posix_spawnattr_getpgroup
|
|
posix_spawnattr_getschedparam
|
|
posix_spawnattr_getschedpolicy
|
|
posix_spawnattr_getsigdefault
|
|
posix_spawnattr_getsigmask
|
|
posix_spawnattr_init
|
|
posix_spawnattr_setflags
|
|
posix_spawnattr_setpgroup
|
|
posix_spawnattr_setschedparam
|
|
posix_spawnattr_setschedpolicy
|
|
posix_spawnattr_setsigdefault
|
|
posix_spawnattr_setsigmask
|
|
posix_spawnp
|
|
pow
|
|
powf
|
|
powl
|
|
pread
|
|
printf
|
|
pselect
|
|
psiginfo
|
|
psignal
|
|
pthread_atfork
|
|
pthread_attr_destroy
|
|
pthread_attr_getdetachstate
|
|
pthread_attr_getguardsize
|
|
pthread_attr_getinheritsched
|
|
pthread_attr_getschedparam
|
|
pthread_attr_getschedpolicy
|
|
pthread_attr_getscope
|
|
pthread_attr_getstack
|
|
pthread_attr_getstacksize
|
|
pthread_attr_init
|
|
pthread_attr_setdetachstate
|
|
pthread_attr_setguardsize
|
|
pthread_attr_setinheritsched
|
|
pthread_attr_setschedparam
|
|
pthread_attr_setschedpolicy
|
|
pthread_attr_setscope
|
|
pthread_attr_setstack
|
|
pthread_attr_setstacksize
|
|
pthread_barrier_destroy
|
|
pthread_barrier_init
|
|
pthread_barrier_wait
|
|
pthread_barrierattr_destroy
|
|
pthread_barrierattr_getpshared
|
|
pthread_barrierattr_init
|
|
pthread_barrierattr_setpshared
|
|
pthread_cancel
|
|
pthread_cond_broadcast
|
|
pthread_cond_destroy
|
|
pthread_cond_init
|
|
pthread_cond_signal
|
|
pthread_cond_timedwait
|
|
pthread_cond_wait
|
|
pthread_condattr_destroy
|
|
pthread_condattr_getclock
|
|
pthread_condattr_getpshared
|
|
pthread_condattr_init
|
|
pthread_condattr_setclock
|
|
pthread_condattr_setpshared
|
|
pthread_create
|
|
pthread_detach
|
|
pthread_equal
|
|
pthread_exit
|
|
pthread_getconcurrency
|
|
pthread_getcpuclockid
|
|
pthread_getschedparam
|
|
pthread_getspecific
|
|
pthread_join
|
|
pthread_key_create
|
|
pthread_key_delete
|
|
pthread_kill
|
|
pthread_mutex_destroy
|
|
pthread_mutex_getprioceiling
|
|
pthread_mutex_init
|
|
pthread_mutex_lock
|
|
pthread_mutex_setprioceiling
|
|
pthread_mutex_trylock
|
|
pthread_mutex_unlock
|
|
pthread_mutexattr_destroy
|
|
pthread_mutexattr_getprioceiling
|
|
pthread_mutexattr_getprotocol
|
|
pthread_mutexattr_getpshared
|
|
pthread_mutexattr_gettype
|
|
pthread_mutexattr_init
|
|
pthread_mutexattr_setprioceiling
|
|
pthread_mutexattr_setprotocol
|
|
pthread_mutexattr_setpshared
|
|
pthread_mutexattr_settype
|
|
pthread_once
|
|
pthread_rwlock_destroy
|
|
pthread_rwlock_init
|
|
pthread_rwlock_rdlock
|
|
pthread_rwlock_tryrdlock
|
|
pthread_rwlock_trywrlock
|
|
pthread_rwlock_unlock
|
|
pthread_rwlock_wrlock
|
|
pthread_rwlockattr_destroy
|
|
pthread_rwlockattr_getpshared
|
|
pthread_rwlockattr_init
|
|
pthread_rwlockattr_setpshared
|
|
pthread_self
|
|
pthread_setcancelstate
|
|
pthread_setcanceltype
|
|
pthread_setconcurrency
|
|
pthread_setschedparam
|
|
pthread_setschedprio
|
|
pthread_setspecific
|
|
pthread_sigmask
|
|
pthread_spin_destroy
|
|
pthread_spin_init
|
|
pthread_spin_lock
|
|
pthread_spin_trylock
|
|
pthread_spin_unlock
|
|
pthread_testcancel
|
|
ptsname
|
|
putc
|
|
putc_unlocked
|
|
putchar
|
|
putchar_unlocked
|
|
putenv
|
|
puts
|
|
pututxline
|
|
putwc
|
|
putwchar
|
|
pwrite
|
|
qsort
|
|
raise
|
|
rand
|
|
rand_r
|
|
random
|
|
read
|
|
readdir
|
|
readdir_r
|
|
readlink
|
|
readlinkat
|
|
readv
|
|
realloc
|
|
realpath
|
|
recv
|
|
recvfrom
|
|
recvmsg
|
|
regcomp
|
|
regerror
|
|
regexec
|
|
regfree
|
|
remainder
|
|
remainderf
|
|
reminderl
|
|
remove
|
|
remque
|
|
remquo
|
|
remquof
|
|
remquol
|
|
rename
|
|
renameat
|
|
rewind
|
|
rewinddir
|
|
rint
|
|
rintf
|
|
rintl
|
|
rmdir
|
|
round
|
|
roundf
|
|
roundl
|
|
scalbln
|
|
scalblnf
|
|
scalblnl
|
|
scalbn
|
|
scalbnf
|
|
scalbnl
|
|
scandir
|
|
scanf
|
|
sched_get_priority_max
|
|
sched_get_priority_min
|
|
sched_getparam
|
|
sched_getscheduler
|
|
sched_rr_get_interval
|
|
sched_setparam
|
|
sched_setscheduler
|
|
sched_yield
|
|
seed48
|
|
seekdir
|
|
select
|
|
sem_close
|
|
sem_destroy
|
|
sem_getvalue
|
|
sem_init
|
|
sem_open
|
|
sem_post
|
|
sem_timedwait
|
|
sem_trywait
|
|
sem_unlink
|
|
sem_wait
|
|
semctl (see chapter "Implementation Notes")
|
|
semget (see chapter "Implementation Notes")
|
|
semop (see chapter "Implementation Notes")
|
|
send
|
|
sendmsg
|
|
sendto
|
|
setbuf
|
|
setegid
|
|
setenv
|
|
seteuid
|
|
setgid
|
|
setgrent
|
|
sethostent
|
|
setitimer (see chapter "Implementation Notes")
|
|
setjmp
|
|
setkey (available in external "crypt" library)
|
|
setlocale
|
|
setlogmask
|
|
setpgid
|
|
setpgrp
|
|
setpriority
|
|
setprotoent
|
|
setpwent
|
|
setregid
|
|
setreuid
|
|
setrlimit
|
|
setservent
|
|
setsid
|
|
setsockopt
|
|
setstate
|
|
setuid
|
|
setutxent
|
|
setvbuf
|
|
shm_open
|
|
shm_unlink
|
|
shmat (see chapter "Implementation Notes")
|
|
shmctl (see chapter "Implementation Notes")
|
|
shmdt (see chapter "Implementation Notes")
|
|
shmget (see chapter "Implementation Notes")
|
|
shutdown
|
|
sigaction
|
|
sigaddset
|
|
sigaltstack
|
|
sigdelset
|
|
sigemptyset
|
|
sigfillset
|
|
sighold
|
|
sigignore
|
|
siginterrupt
|
|
sigismember
|
|
siglongjmp
|
|
signal
|
|
signbit (see chapter "Implementation Notes")
|
|
signgam
|
|
sigpause
|
|
sigpending
|
|
sigprocmask
|
|
sigqueue
|
|
sigrelse
|
|
sigset
|
|
sigsetjmp
|
|
sigsuspend
|
|
sigwait
|
|
sigwaitinfo
|
|
sin
|
|
sinf
|
|
sinh
|
|
sinhf
|
|
sinhl
|
|
sinl
|
|
sleep
|
|
snprintf
|
|
sockatmark
|
|
socket
|
|
socketpair
|
|
sprintf
|
|
sqrt
|
|
sqrtf
|
|
sqrtl
|
|
srand
|
|
srand48
|
|
srandom
|
|
sscanf
|
|
stat
|
|
statvfs
|
|
stderr
|
|
stdin
|
|
stdout
|
|
stpcpy
|
|
stpncpy
|
|
strcasecmp
|
|
strcasecmp_l
|
|
strcat
|
|
strchr
|
|
strcmp
|
|
strcoll
|
|
strcoll_l
|
|
strcpy
|
|
strcspn
|
|
strdup
|
|
strerror
|
|
strerror_r
|
|
strfmon
|
|
strfmon_l
|
|
strftime
|
|
strftime_l
|
|
strlen
|
|
strncasecmp
|
|
strncasecmp_l
|
|
strncat
|
|
strncmp
|
|
strncpy
|
|
strndup
|
|
strnlen
|
|
strpbrk
|
|
strptime
|
|
strrchr
|
|
strsignal
|
|
strspn
|
|
strstr
|
|
strtod
|
|
strtof
|
|
strtoimax
|
|
strtok
|
|
strtok_r
|
|
strtol
|
|
strtold
|
|
strtoll
|
|
strtoul
|
|
strtoull
|
|
strtoumax
|
|
strxfrm
|
|
strxfrm_l
|
|
swab
|
|
swprintf
|
|
swscanf
|
|
symlink
|
|
symlinkat
|
|
sync
|
|
sysconf
|
|
syslog
|
|
system
|
|
tan
|
|
tanf
|
|
tanh
|
|
tanhf
|
|
tanhl
|
|
tanl
|
|
tcdrain
|
|
tcflow
|
|
tcflush
|
|
tcgetattr
|
|
tcgetpgrp
|
|
tcgetsid
|
|
tcsendbreak
|
|
tcsetattr
|
|
tcsetpgrp
|
|
tdelete
|
|
telldir
|
|
tempnam
|
|
tfind
|
|
tgamma
|
|
tgammaf
|
|
tgammal
|
|
time
|
|
timer_create (see chapter "Implementation Notes")
|
|
timer_delete
|
|
timer_gettime
|
|
timer_settime
|
|
times
|
|
timezone
|
|
tmpfile
|
|
tmpnam
|
|
tolower
|
|
tolower_l
|
|
toupper
|
|
toupper_l
|
|
towctrans
|
|
towctrans_l
|
|
towlower
|
|
towlower_l
|
|
towupper
|
|
towupper_l
|
|
trunc
|
|
truncate
|
|
truncf
|
|
truncl
|
|
tsearch
|
|
ttyname
|
|
ttyname_r
|
|
twalk
|
|
tzname
|
|
tzset
|
|
umask
|
|
uname
|
|
ungetc
|
|
ungetwc
|
|
unlink
|
|
unlinkat
|
|
unlockpt
|
|
unsetenv
|
|
uselocale
|
|
utime
|
|
utimensat
|
|
utimes
|
|
va_arg
|
|
va_copy
|
|
va_end
|
|
va_start
|
|
vdprintf
|
|
vfprintf
|
|
vfscanf
|
|
vfwprintf
|
|
vfwscanf
|
|
vprintf
|
|
vscanf
|
|
vsnprintf
|
|
vsprintf
|
|
vsscanf
|
|
vswprintf
|
|
vswscanf
|
|
vwprintf
|
|
vwscanf
|
|
wait
|
|
waitpid
|
|
wcpcpy
|
|
wcpncpy
|
|
wcrtomb
|
|
wcscasecmp
|
|
wcscasecmp_l
|
|
wcscat
|
|
wcschr
|
|
wcscmp
|
|
wcscoll
|
|
wcscoll_l
|
|
wcscpy
|
|
wcscspn
|
|
wcsdup
|
|
wcsftime
|
|
wcslen
|
|
wcsncasecmp
|
|
wcsncasecmp_l
|
|
wcsncat
|
|
wcsncmp
|
|
wcsncpy
|
|
wcsnlen
|
|
wcsnrtombs
|
|
wcspbrk
|
|
wcsrchr
|
|
wcsrtombs
|
|
wcsspn
|
|
wcsstr
|
|
wcstod
|
|
wcstof
|
|
wcstoimax
|
|
wcstok
|
|
wcstol
|
|
wcstold
|
|
wcstoll
|
|
wcstombs
|
|
wcstoul
|
|
wcstoull
|
|
wcstoumax
|
|
wcswidth
|
|
wcsxfrm
|
|
wcsxfrm_l
|
|
wctob
|
|
wctomb
|
|
wctrans
|
|
wctrans_l
|
|
wctype
|
|
wctype_l
|
|
wcwidth
|
|
wmemchr
|
|
wmemcmp
|
|
wmemcpy
|
|
wmemmove
|
|
wmemset
|
|
wordexp
|
|
wordfree
|
|
wprintf
|
|
write
|
|
writev
|
|
wscanf
|
|
y0
|
|
y1
|
|
yn
|
|
</screen>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="std-bsd"><title>System interfaces compatible with BSD functions:</title>
|
|
|
|
<screen>
|
|
__b64_ntop
|
|
__b64_pton
|
|
arc4random
|
|
arc4random_addrandom
|
|
arc4random_buf
|
|
arc4random_stir
|
|
arc4random_uniform
|
|
bindresvport
|
|
bindresvport_sa
|
|
cfmakeraw
|
|
cfsetspeed
|
|
clearerr_unlocked
|
|
daemon
|
|
dn_comp
|
|
dn_expand
|
|
dn_skipname
|
|
drem
|
|
eaccess
|
|
endusershell
|
|
err
|
|
errx
|
|
feof_unlocked
|
|
ferror_unlocked
|
|
fflush_unlocked
|
|
fileno_unlocked
|
|
fgetc_unlocked
|
|
finite
|
|
finitef
|
|
finitel
|
|
fiprintf
|
|
flock (see chapter "Implementation Notes")
|
|
forkpty
|
|
fpurge
|
|
fputc_unlocked
|
|
fread_unlocked
|
|
freeifaddrs
|
|
fstatfs
|
|
fts_children
|
|
fts_close
|
|
fts_get_clientptr
|
|
fts_get_stream
|
|
fts_open
|
|
fts_read
|
|
fts_set
|
|
fts_set_clientptr
|
|
funopen
|
|
futimes
|
|
fwrite_unlocked
|
|
gamma
|
|
gamma_r
|
|
gammaf
|
|
gammaf_r
|
|
getdtablesize
|
|
getgrouplist
|
|
getifaddrs
|
|
getpagesize
|
|
getpeereid
|
|
getprogname
|
|
getusershell
|
|
herror
|
|
hstrerror
|
|
inet_aton
|
|
inet_makeaddr
|
|
inet_netof
|
|
inet_network
|
|
initgroups
|
|
iruserok
|
|
iruserok_sa
|
|
issetugid
|
|
login
|
|
login_tty
|
|
logout
|
|
logwtmp
|
|
madvise
|
|
mkstemps
|
|
openpty
|
|
qsort_r (see chapter "Implementation Notes")
|
|
rcmd
|
|
rcmd_af
|
|
reallocf
|
|
res_close
|
|
res_init
|
|
res_mkquery
|
|
res_nclose
|
|
res_ninit
|
|
res_nmkquery
|
|
res_nquery
|
|
res_nquerydomain
|
|
res_nsearch
|
|
res_nsend
|
|
res_query
|
|
res_querydomain
|
|
res_search
|
|
res_send
|
|
revoke
|
|
rexec
|
|
rpmatch
|
|
rresvport
|
|
rresvport_af
|
|
ruserok
|
|
sbrk
|
|
setbuffer
|
|
setgroups
|
|
sethostname
|
|
setlinebuf
|
|
setpassent
|
|
setprogname
|
|
settimeofday
|
|
setusershell
|
|
statfs
|
|
strcasestr
|
|
strlcat
|
|
strlcpy
|
|
strsep
|
|
updwtmp
|
|
valloc
|
|
verr
|
|
verrx
|
|
vhangup (see chapter "Implementation Notes")
|
|
vsyslog
|
|
vwarn
|
|
vwarnx
|
|
wait3
|
|
wait4
|
|
warn
|
|
warnx
|
|
wcslcat
|
|
wcslcpy
|
|
</screen>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="std-gnu"><title>System interfaces compatible with GNU or Linux extensions:</title>
|
|
|
|
<screen>
|
|
__mempcpy
|
|
accept4
|
|
argz_add
|
|
argz_add_sep
|
|
argz_append
|
|
argz_count
|
|
argz_create
|
|
argz_create_sep
|
|
argz_delete
|
|
argz_extract
|
|
argz_insert
|
|
argz_next
|
|
argz_replace
|
|
argz_stringify
|
|
asnprintf
|
|
asprintf
|
|
asprintf_r
|
|
basename (see chapter "Implementation Notes")
|
|
canonicalize_file_name
|
|
clog10
|
|
clog10f
|
|
clog10l
|
|
dremf
|
|
dup3
|
|
envz_add
|
|
envz_entry
|
|
envz_get
|
|
envz_merge
|
|
envz_remove
|
|
envz_strip
|
|
error
|
|
error_at_line
|
|
euidaccess
|
|
execvpe
|
|
exp10
|
|
exp10f
|
|
exp10l
|
|
fcloseall
|
|
fcloseall_r
|
|
fedisableexcept
|
|
feenableexcept
|
|
fegetexcept
|
|
fegetprec
|
|
fesetprec
|
|
ffsl
|
|
ffsll
|
|
fgets_unlocked
|
|
fgetwc_unlocked
|
|
fgetws_unlocked
|
|
fgetxattr
|
|
flistxattr
|
|
fopencookie
|
|
fputs_unlocked
|
|
fputwc_unlocked
|
|
fputws_unlocked
|
|
fremovexattr
|
|
fsetxattr
|
|
get_avphys_pages
|
|
get_current_dir_name
|
|
get_nprocs
|
|
get_nprocs_conf
|
|
get_phys_pages
|
|
getmntent_r
|
|
getopt_long
|
|
getopt_long_only
|
|
getpt
|
|
getwc_unlocked
|
|
getwchar_unlocked
|
|
getxattr
|
|
lgetxattr
|
|
listxattr
|
|
llistxattr
|
|
lremovexattr
|
|
lsetxattr
|
|
memmem
|
|
mempcpy
|
|
memrchr
|
|
mkostemp
|
|
mkostemps
|
|
pipe2
|
|
pow10
|
|
pow10f
|
|
pow10l
|
|
ppoll
|
|
pthread_getattr_np
|
|
pthread_getname_np
|
|
pthread_setname_np
|
|
pthread_sigqueue
|
|
ptsname_r
|
|
putwc_unlocked
|
|
putwchar_unlocked
|
|
qsort_r (see chapter "Implementation Notes")
|
|
quotactl
|
|
rawmemchr
|
|
removexattr
|
|
scandirat
|
|
setxattr
|
|
sincos
|
|
sincosf
|
|
sincosl
|
|
strchrnul
|
|
strtod_l
|
|
strtof_l
|
|
strtol_l
|
|
strtold_l
|
|
strtoll_l
|
|
strtoul_l
|
|
strtoull_l
|
|
sysinfo
|
|
tdestroy
|
|
timegm
|
|
timelocal
|
|
toascii_l
|
|
updwtmpx
|
|
utmpxname
|
|
vasnprintf
|
|
vasprintf
|
|
vasprintf_r
|
|
wcstod_l
|
|
wcstof_l
|
|
wcstol_l
|
|
wcstold_l
|
|
wcstoll_l
|
|
wcstoul_l
|
|
wcstoull_l
|
|
</screen>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="std-solaris"><title>System interfaces compatible with Solaris or SunOS functions:</title>
|
|
|
|
<screen>
|
|
__fbufsize
|
|
__flbf
|
|
__fpending
|
|
__fpurge
|
|
__freadable
|
|
__freading
|
|
__fsetlocking
|
|
__fwritable
|
|
__fwriting
|
|
acl
|
|
aclcheck
|
|
aclfrommode
|
|
aclfrompbits
|
|
aclfromtext
|
|
aclsort
|
|
acltomode
|
|
acltopbits
|
|
acltotext
|
|
endmntent
|
|
facl
|
|
futimesat
|
|
getmntent
|
|
memalign
|
|
setmntent
|
|
xdr_array (available in external "libtirpc" library)
|
|
xdr_bool (available in external "libtirpc" library)
|
|
xdr_bytes (available in external "libtirpc" library)
|
|
xdr_char (available in external "libtirpc" library)
|
|
xdr_double (available in external "libtirpc" library)
|
|
xdr_enum (available in external "libtirpc" library)
|
|
xdr_float (available in external "libtirpc" library)
|
|
xdr_free (available in external "libtirpc" library)
|
|
xdr_hyper (available in external "libtirpc" library)
|
|
xdr_int (available in external "libtirpc" library)
|
|
xdr_int16_t (available in external "libtirpc" library)
|
|
xdr_int32_t (available in external "libtirpc" library)
|
|
xdr_int64_t (available in external "libtirpc" library)
|
|
xdr_int8_t (available in external "libtirpc" library)
|
|
xdr_long (available in external "libtirpc" library)
|
|
xdr_longlong_t (available in external "libtirpc" library)
|
|
xdr_netobj (available in external "libtirpc" library)
|
|
xdr_opaque (available in external "libtirpc" library)
|
|
xdr_pointer (available in external "libtirpc" library)
|
|
xdr_reference (available in external "libtirpc" library)
|
|
xdr_short (available in external "libtirpc" library)
|
|
xdr_sizeof (available in external "libtirpc" library)
|
|
xdr_string (available in external "libtirpc" library)
|
|
xdr_u_char (available in external "libtirpc" library)
|
|
xdr_u_hyper (available in external "libtirpc" library)
|
|
xdr_u_int (available in external "libtirpc" library)
|
|
xdr_u_int16_t (available in external "libtirpc" library)
|
|
xdr_u_int32_t (available in external "libtirpc" library)
|
|
xdr_u_int64_t (available in external "libtirpc" library)
|
|
xdr_u_int8_t (available in external "libtirpc" library)
|
|
xdr_u_long (available in external "libtirpc" library)
|
|
xdr_u_longlong_t (available in external "libtirpc" library)
|
|
xdr_u_short (available in external "libtirpc" library)
|
|
xdr_uint16_t (available in external "libtirpc" library)
|
|
xdr_uint32_t (available in external "libtirpc" library)
|
|
xdr_uint64_t (available in external "libtirpc" library)
|
|
xdr_uint8_t (available in external "libtirpc" library)
|
|
xdr_union (available in external "libtirpc" library)
|
|
xdr_vector (available in external "libtirpc" library)
|
|
xdr_void (available in external "libtirpc" library)
|
|
xdr_wrapstring (available in external "libtirpc" library)
|
|
xdrmem_create (available in external "libtirpc" library)
|
|
xdrrec_create (available in external "libtirpc" library)
|
|
xdrrec_endofrecord (available in external "libtirpc" library)
|
|
xdrrec_eof (available in external "libtirpc" library)
|
|
xdrrec_skiprecord (available in external "libtirpc" library)
|
|
__xdrrec_getrec (available in external "libtirpc" library)
|
|
__xdrrec_setnonblock (available in external "libtirpc" library)
|
|
xdrstdio_create (available in external "libtirpc" library)
|
|
</screen>
|
|
|
|
<sect1 id="std-iso"><title>System interfaces not in POSIX but compatible with ISO C requirements:</title>
|
|
|
|
<screen>
|
|
aligned_alloc (ISO C11)
|
|
at_quick_exit (ISO C11)
|
|
quick_exit (ISO C11)
|
|
</screen>
|
|
|
|
</sect1>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="std-deprec"><title>Other UNIX system interfaces, not in POSIX.1-2008 or deprecated:</title>
|
|
|
|
<screen>
|
|
bcmp (POSIX.1-2001, SUSv3)
|
|
bcopy (SUSv3)
|
|
bzero (SUSv3)
|
|
chroot (SUSv2) (see chapter "Implementation Notes")
|
|
clock_setres (QNX, VxWorks) (see chapter "Implementation Notes")
|
|
cuserid (POSIX.1-1988, SUSv2)
|
|
ecvt (SUSv3)
|
|
endutent (XPG2)
|
|
fcvt (SUSv3)
|
|
ftime (SUSv3)
|
|
gcvt (SUSv3)
|
|
getcontext (SUSv3)
|
|
gethostbyaddr (SUSv3)
|
|
gethostbyname (SUSv3)
|
|
gethostbyname2 (first defined in BIND 4.9.4)
|
|
getpass (SUSv2)
|
|
getutent (XPG2)
|
|
getutid (XPG2)
|
|
getutline (XPG2)
|
|
getw (SVID)
|
|
getwd (SUSv3)
|
|
h_errno (SUSv3)
|
|
index (SUSv3)
|
|
makecontext (SUSv3)
|
|
mallinfo (SVID)
|
|
mallopt (SVID)
|
|
mktemp (SUSv3)
|
|
on_exit (SunOS)
|
|
pthread_attr_getstackaddr (SUSv3)
|
|
pthread_attr_setstackaddr (SUSv3)
|
|
pthread_continue (XPG2)
|
|
pthread_getsequence_np (Tru64)
|
|
pthread_suspend (XPG2)
|
|
pthread_yield (POSIX.1c drafts)
|
|
pututline (XPG2)
|
|
putw (SVID)
|
|
rindex (SUSv3)
|
|
scalb (SUSv3)
|
|
setcontext (SUSv3)
|
|
setutent (XPG2)
|
|
stime (SVID)
|
|
swapcontext (SUSv3)
|
|
sys_errlist (BSD)
|
|
sys_nerr (BSD)
|
|
sys_siglist (BSD)
|
|
toascii (SUSv3)
|
|
ttyslot (SUSv2)
|
|
ualarm (SUSv3)
|
|
usleep (SUSv3)
|
|
utmpname (XPG2)
|
|
vfork (SUSv3) (see chapter "Implementation Notes")
|
|
</screen>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="std-notimpl"><title>NOT implemented system interfaces from the Single Unix Specification, Volume 4:</title>
|
|
|
|
<screen>
|
|
aio_cancel
|
|
aio_error
|
|
aio_fsync
|
|
aio_read
|
|
aio_return
|
|
aio_suspend
|
|
aio_write
|
|
endnetent
|
|
fattach
|
|
fmtmsg
|
|
getdate
|
|
getdate_err
|
|
gethostent
|
|
getmsg
|
|
getnetbyaddr
|
|
getnetbyname
|
|
getnetent
|
|
getpmsg
|
|
isastream
|
|
lio_listio
|
|
mlockall
|
|
munlockall
|
|
posix_mem_offset
|
|
posix_trace[...]
|
|
posix_typed_[...]
|
|
pthread_mutexattr_getrobust
|
|
pthread_mutexattr_setrobust
|
|
pthread_mutex_consistent
|
|
pthread_mutex_timedlock
|
|
pthread_rwlock_timedrdlock
|
|
pthread_rwlock_timedwrlock
|
|
putmsg
|
|
setnetent
|
|
sigtimedwait
|
|
timer_getoverrun
|
|
ulimit
|
|
waitid
|
|
</screen>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="std-notes"><title>Implementation Notes</title>
|
|
|
|
<para><function>chroot</function> only emulates a chroot function call
|
|
by keeping track of the current root and accomodating this in the file
|
|
related function calls. A real chroot functionality is not supported by
|
|
Windows however.</para>
|
|
|
|
<para><function>clock_nanosleep</function> currently supports only
|
|
CLOCK_REALTIME and CLOCK_MONOTONIC. <function>clock_setres</function>,
|
|
<function>clock_settime</function>, and <function>timer_create</function>
|
|
currently support only CLOCK_REALTIME.</para>
|
|
|
|
<para>POSIX file locks via <function>fcntl</function> or
|
|
<function>lockf</function>, as well as BSD <function>flock</function> locks
|
|
are advisory locks. They don't interact with Windows mandatory locks, nor
|
|
do POSIX fcntl locks interfere with BSD flock locks or vice versa.</para>
|
|
|
|
<para>BSD file locks created via <function>flock</function> are only
|
|
propagated to the direct parent process, not to grand parents or sibling
|
|
processes. The locks are only valid in the creating process, its parent
|
|
process, and subsequently started child processes sharing the same file
|
|
descriptor.</para>
|
|
|
|
<para>In very rare circumstances an application would want to use Windows
|
|
mandatory locks to interact with non-Cygwin Windows processes accessing the
|
|
same file (databases, etc). For these purposes, the entire locking mechanism
|
|
(fcntl/flock/lockf) can be switched to Windows mandatory locks on a
|
|
per-descriptor/per-process basis. For this purpose, use the call
|
|
|
|
<screen>
|
|
fcntl (fd, F_LCK_MANDATORY, 1);
|
|
</screen>
|
|
|
|
After that, all file locks on this descriptor will follow Windows mandatory
|
|
record locking semantics: Locks are per-descriptor/per-process; locks are not
|
|
propagated to child processes, not even via <function>execve</function>;
|
|
no atomic replacement of read locks with write locks and vice versa on the
|
|
same descriptor; locks have to be unlocked exactly as they have been locked.
|
|
</para>
|
|
|
|
<para><function>fpclassify</function>, <function>isfinite</function>,
|
|
<function>isgreater</function>, <function>isgreaterequal</function>,
|
|
<function>isinf</function>, <function>isless</function>,
|
|
<function>islessequal</function>, <function>islessgreater</function>,
|
|
<function>isnan</function>, <function>isnormal</function>,
|
|
<function>isunordered</function>, and <function>signbit</function>
|
|
only support float and double arguments, not long double arguments.</para>
|
|
|
|
<para><function>getitimer</function> and <function>setitimer</function>
|
|
only support ITIMER_REAL for now.</para>
|
|
|
|
<para><function>link</function> will fail on FAT, FAT32, and other filesystems
|
|
not supporting hardlinks, just as on Linux.</para>
|
|
|
|
<para><function>lseek</function> only works properly on files opened in
|
|
binary mode. On files opened in textmode (via mount mode or explicit
|
|
open flag) its positioning is potentially unreliable.</para>
|
|
|
|
<para><function>setuid</function> is only safe against reverting the user
|
|
switch after a call to one of the exec(2) functions took place. Windows
|
|
doesn't support a non-revertable user switch within the context of Win32
|
|
processes.</para>
|
|
|
|
<para><function>vfork</function> just calls <function>fork</function>.</para>
|
|
|
|
<para><function>vhangup</function> and <function>revoke</function> always
|
|
return -1 and set errno to ENOSYS. <function>grantpt</function> and
|
|
<function>unlockpt</function> always just return 0.</para>
|
|
|
|
<para>The XSI IPC functions <function>semctl</function>,
|
|
<function>semget</function>, <function>semop</function>,
|
|
<function>shmat</function>, <function>shmctl</function>,
|
|
<function>shmdt</function>, <function>shmget</function>,
|
|
<function>msgctl</function>, <function>msgget</function>,
|
|
<function>msgrcv</function> and <function>msgsnd</function> are only
|
|
available when cygserver is running.</para>
|
|
|
|
<para>The Linux-specific function <function>quotactl</function> only implements
|
|
what works on Windows: Windows only supports user block quotas on NTFS, no
|
|
group quotas, no inode quotas, no time constraints.</para>
|
|
|
|
<para><function>qsort_r</function> is available in both BSD and GNU flavors,
|
|
depending on whether _BSD_SOURCE or _GNU_SOURCE is defined when compiling.</para>
|
|
|
|
<para><function>basename</function> is available in both POSIX and GNU flavors,
|
|
depending on whether libgen.h is included or not.</para>
|
|
|
|
</sect1>
|
|
|
|
</chapter>
|