212 Commits (ebec6ee14099269fe64b34c11ce9ea5b890dd1f3)

Author SHA1 Message Date
leitner fc223dc725 recent kernel return POLLERR and then calling read returns EGAIN which
leads to busy loop. Try to work around.
3 years ago
leitner 0556994916 try to prevent ARM from reordering writes in hardware 3 years ago
leitner 853242b078 next attempt (I need a bsd shell) 4 years ago
leitner efb1a8a2ae kqueue path assumed EVFILT_READ and EVFILT_WRITE are bits that can be used with | and ~ and &
they aren't
4 years ago
leitner 2788b18f32 provide prototype 4 years ago
leitner cef53a5907 try too fix erdgeist's bug 4 years ago
leitner 1a793700a8 try to fix erdgeist's bug 4 years ago
leitner 45f99bbd0a in io_eagain, make sure the kernel knows we wanted to write to the
descriptor in case we optimized the syscall away previously
in iob_send leave loop if we got a partial write
4 years ago
leitner f4cd377378 fix out of bounds memory access 4 years ago
leitner 86e596b870 limit iovec size for sendmsg code path to 50 4 years ago
leitner 1fb5505cc2 add missing includes 4 years ago
leitner b5f21a3900 add support for saving syscalls with accept4 4 years ago
leitner c4b0dd6b81 move cleanup after check that all events are handled 4 years ago
leitner 15f004df55 prevent infinite loop in cleanup code for
io_close-with-outstanding-events-queued race prevention
4 years ago
leitner 5f9f1a2a62 properly initialize deferred list in io_fd (did not help though) 4 years ago
leitner ad37bd83de add snarky comment 4 years ago
leitner d4ac8fe906 might actually work now 4 years ago
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