1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
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.?
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 anbd EIO_FALLOC_FL_ZERO_RANGE.
|