leitner
75fe9a620e
attempt to prevent future endless loops in io_wait half-closed fd
...
cleanup
4 years ago
leitner
ddfdd4d077
add compiler.h to abstract gcc attributes
4 years ago
leitner
69c9d1454d
port the epoll optimizations to kqueue, hopefully repairing it in the process
5 years ago
leitner
9d51f000ef
silence another compiler warning
5 years ago
leitner
bbaf63c7fd
remove compiler warnings in ent
...
try to fix io_waituntil2 on freebsd
5 years ago
leitner
8b0450cd29
some old glibc may define MSG_ZEROCOPY but not SO_ZEROCOPY :-(
5 years ago
leitner
278a675a69
bsd fix
6 years ago
leitner
97368fbfa6
BSD build fix (hopefully)
...
move more #include to <libowfat/...>
6 years ago
leitner
3873bab74b
add stralloc_APPEND
...
use atomic updates for iom->working
7 years ago
leitner
ce595ae0cc
add experimental iom API for multithreaded I/O multiplexing (in io.h)
7 years ago
leitner
94feba3667
use write in buffer_put for a slight perf improvement
7 years ago
leitner
e4a2f4d068
compile if MSG_ZEROCOPY is not defined by libc
7 years ago
leitner
f8c4132df0
add MSG_ZEROCOPY support (only used for buffers >8k)
7 years ago
leitner
760598ec2f
#include <foo.h> -> #include <libowfat/foo.h>
8 years ago
leitner
c29096b2e0
some more eagain handling in tryread and trywrite
...
cosmetic change
8 years ago
leitner
d862c9e482
"fmt.h" instead of <fmt.h>
8 years ago
leitner
b4c4eb607e
remove OpenBSD #warning (obsd maintainer says no longer needed)
8 years ago
leitner
2a0bcc2fb6
implement deferred closing
8 years ago
leitner
b73a699dab
reengineer alt queue handling to prevent race
8 years ago
leitner
f9570b38a1
attempt to work around race condition when you close an fd but there are
...
still outstanding events queued on it.
8 years ago
leitner
8913f6174c
document race condition caused by queueing of multiple events
8 years ago
leitner
137b80ea74
test for pread and use it instead of lseek+read in cdb and io_mmapwritefile
9 years ago
leitner
a1f1986247
include <foo> -> include "foo"
9 years ago
leitner
7bdc1b29bb
a few missing headers and minor fixes
...
fix corking behavior for the case where a buffer follows a buffer in
iob_send
9 years ago
leitner
fce165fdcb
remove dead store
10 years ago
leitner
c60c2425ce
hopefully fix the infinite loop in gatling
10 years ago
leitner
193dfba16b
remove compiler warning
10 years ago
leitner
4fa4a524d2
add io_fd_flags so the caller can tell io_fd whether the socket is blocking
...
(saves one fcntl syscall)
10 years ago
leitner
953eb639b2
on Linux, save a few syscalls by using sendto/sendmsg with MSG_MORE
...
instead of write/writev + setsockopt TCP_CORK
10 years ago
leitner
4404ab35f3
revert to level triggering for epoll (forgot io_wantread)
10 years ago
leitner
967e3ce019
revert edge triggering epoll; it had reliability and fairness issues and
...
was also not actually faster
10 years ago
leitner
39e7ee90bb
introduce io_eagain_read and io_eagain_write (discontinue using io_eagain plz)
11 years ago
leitner
d9cbb3940c
it turns out you don't need -1/EGAIN to know edge triggering told you
...
there is no more data, it's enough to read/write less than you asked for
11 years ago
leitner
5baf943f0a
finish epoll move to edge triggering
11 years ago
leitner
a544abc39c
switch io_fds from array to newly implemented (hopefully thread-safe) iarray
...
switch epoll from level triggering to edge triggering
11 years ago
leitner
ff3a3410ec
hopefully this fixes the looping gatling processes
11 years ago
leitner
e175800a8c
add io_fd_canwrite (like io_fd but assume the fd is writable)
...
save a few syscalls here and there
13 years ago
leitner
6e6fc8b85d
fix endless loop bug on freebsd
13 years ago
leitner
c2a2a15c12
document the return value expected from the callback given to iob_write
...
remove unused #include in iob_reset
if iob_addfile_close fails, it now closes the fd
if iob_addbuf_munmap fails, it now munmaps the buf
if iob_addbuf_free fails, it now frees the buf
some win32 cross-compile fixes for iarray
13 years ago
leitner
662cf55fc9
accept -3 as error return from the callback, too
13 years ago
leitner
b0886bc324
the iob calls return int, not void
13 years ago
leitner
d2aae4864c
only try to receive one byte to avoid discarding data
14 years ago
leitner
3bed09a972
get rid of warning
15 years ago
leitner
acd4fdb68b
add/fix man pages
...
zero a buffer in io_passfd so valgrind does not complain when we pass it
to a syscall (which did not use the uninitialized parts anyway)
15 years ago
leitner
1fcfcd268a
hups
16 years ago
leitner
51202765fe
the #define extern hack in io_fd.c also included time.h, fix that
...
catch case in timeout loop where we have something to report on an fd;
in that case do not report a timeout but let the other event get through
first.
16 years ago
leitner
fd47173110
remove four warnings
16 years ago
leitner
a8a5e9a3d5
some valgrind de-noising
...
fix subtle typo in sub_of (David Sirovsky)
17 years ago
leitner
68d88f60b9
munmap cleanup fix (Erdgeist)
17 years ago
leitner
8b17690318
use callback based infrastructure to reset iob's
17 years ago