Implementation Notes

chroot 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.

clock_nanosleep currently supports only CLOCK_REALTIME and CLOCK_MONOTONIC. clock_setres, clock_settime, and timer_create currently support only CLOCK_REALTIME.

BSD file locks created via flock 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, and subsequently started child processes sharing the same file descriptor.

fpclassify, isfinite, isgreater, isgreaterequal, isinf, isless, islessequal, islessgreater, isnan, isnormal, isunordered, and signbit only support float and double arguments, not long double arguments.

getitimer and setitimer only support ITIMER_REAL for now.

link will fail on FAT, FAT32, and other filesystems not supporting hardlinks, just as on Linux.

lseek 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.

setuid 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.

vfork just calls fork.

vhangup and revoke always return -1 and set errno to ENOSYS. grantpt and unlockpt always just return 0.

The XSI IPC functions semctl, semget, semop, shmat, shmctl, shmdt, shmget, msgctl, msgget, msgrcv and msgsnd are only available when cygserver is running.