Revision history for libeio TODO: maybe add mincore support? available on at least darwin, solaris, linux, freebsd TODO: openbsd requires stdint.h for intptr_t - why posix? TODO: make mtouch/readdir maybe others cancellable in-request TODO: fadvise request TODO: fdopendir/utimensat TODO: maybe work around 3.996gb barrier in pread/pwrite as well, maybe readahead etc.? TODO: pthread_condattr_setclock(..., CLOCK_MONOTONIC) and clock_gettime(CLOCK_MONOTONIC) instead of defualt CLOCK_REALTIME timeouts 1.0 - for simple request api, initialise result/errorno to -1/ECANCELED. - fix a deadlock where a wakeup signal could be missed when a timeout occured at the same time. - use nonstandard but maybe-working-on-bsd fork technique. - use fewer time() syscalls when waiting for new requests. - fix a path-memory-leak in readdir when using the wrappers (reported by Thomas L. Shinnick). - support a max_idle value of 0. - support setting of idle timeout value (eio_set_idle_timeout). - readdir: correctly handle malloc failures. - readdir: new flags argument, can return inode and possibly filetype, can sort in various ways. - readdir: stop immediately when cancelled, do not continue reading the directory. - fix return value of eio_sendfile_sync. - include sys/mman.h for msync. - added EIO_STACKSIZE. - added msync, mtouch support (untested). - added sync_file_range (untested). - fixed custom support. - use a more robust feed-add detection method. - "outbundled" from IO::AIO. - eio_set_max_polltime did not properly convert time to ticks. - tentatively support darwin in sendfile. - fix freebsd/darwin sendfile. - also use sendfile emulation for ENOTSUP and EOPNOTSUPP error codes. - add OS-independent EIO_MT_* and EIO_MS_* flag enums. - add eio_statvfs/eio_fstatvfs. - add eio_mlock/eio_mlockall and OS-independent MCL_* flag enums. - no longer set errno to 0 before making syscalls, this only lures people into the trap of believing errno shows success or failure. - "fix" demo.c so that it works as non-root. - suppoert utimes seperately from futimes, as some systems have utimes but not futimes. - use _POSIX_MEMLOCK_RANGE for mlock. - do not (errornously) overwrite CFLAGS in configure.ac. - mknod used int3 for dev_t (ยง2 bit), not offs (64 bit). - fix memory corruption in eio_readdirx for the flags combination EIO_READDIR_STAT_ORDER | EIO_READDIR_DIRS_FIRST. - port to openbsd (another blatantly broken non-UNIX/POSIX platform). - fix eio_custom prototype. - work around a Linux (and likely FreeBSD and other kernels) bug where sendfile would not transfer all the requested bytes on large transfers, using a heuristic. - use libecb, and apply lots of minor space optimisations. - disable sendfile on darwin, broken as everything else. - add realpath request and implementation. - cancelled requests will still invoke their request callbacks. - add fallocate. - do not acquire any locks when forking. - incorporated some mingw32 changes by traviscline. - added syncfs support, using direct syscall. - set thread name on linux (ps -L/Hcx, top, gdb). - remove useless use of volatile variables. - fix memory leak when reaping threads. - use utime now uses nanosecond resolution on posix 2008 systems. - allow taking advantage of posix 2008 xxxat functions and fdopendir by implementing a working directory abstraction. - make readahead emulation behave more like actual readahead by never failing. - added EIO_LSEEK (untested). - added EIO_FALLOC_FL_PUNCH_HOLE. - wtf. etp_proc returned 0, and no compiler ever complained. - remove pread/pwrite emulation, as the only system that lacked them (cygwin) provides them for a while now. - provide pread/pwrite implementations for win32. - implement aio_realpath for windows. - add EIO_FALLOC_FL_COLLAPSE_RANGE and EIO_FALLOC_FL_ZERO_RANGE. - add EIO_FCNTL, EIO_IOCTL. - try to use SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE when creating symlinks on windows. - support a minimum of EIO_PATH_MIN (default: 8160) as PATH_MAX (including trailing 0 byte) in readlink, realpath etc. - generate ENAMETOOLONG if readlink overflow is detected. - implement support for renameat2, and corresponding flags. - add EIO_FALLOC_FL_INSERT_RANGE and EIO_FALLOC_FL_UNSHARE_RANGE. - use posix_close if available or needed. - save errno around close in ftruncateat, fstatvfsat and EIO_CLOSE. - add EIO_SLURP convenience request. - update configure.ac for newer autoconf/automake. - include sys/prctl.h if available. - use O_NONBLOCK when opening directories and in truncateat and statvfsat. - add EIO_MCL_ONFAULT. - add eio_mlockall_sync. - fix configure tests for readahead and sync_file_range, they were based on the manpages, which turned out to be wrong. - protect wd_open against fd being 0, which is used for the value of EIO_CWD.