asyncengine 0.0.1.testing
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +0 -0
- data/asyncengine.gemspec +26 -0
- data/ext/asyncengine_ext/asyncengine_ruby.c +82 -0
- data/ext/asyncengine_ext/extconf.rb +47 -0
- data/ext/asyncengine_ext/libuv/AUTHORS +45 -0
- data/ext/asyncengine_ext/libuv/LICENSE +42 -0
- data/ext/asyncengine_ext/libuv/Makefile +119 -0
- data/ext/asyncengine_ext/libuv/README.md +88 -0
- data/ext/asyncengine_ext/libuv/build/gcc_version.py +20 -0
- data/ext/asyncengine_ext/libuv/common.gypi +176 -0
- data/ext/asyncengine_ext/libuv/config-mingw.mk +61 -0
- data/ext/asyncengine_ext/libuv/config-unix.mk +173 -0
- data/ext/asyncengine_ext/libuv/gyp_uv +60 -0
- data/ext/asyncengine_ext/libuv/include/ares.h +591 -0
- data/ext/asyncengine_ext/libuv/include/ares_version.h +24 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/eio.h +403 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/ev.h +838 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/ngx-queue.h +106 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/tree.h +768 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/uv-unix.h +256 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/uv-win.h +458 -0
- data/ext/asyncengine_ext/libuv/include/uv.h +1556 -0
- data/ext/asyncengine_ext/libuv/src/ares/AUTHORS +37 -0
- data/ext/asyncengine_ext/libuv/src/ares/CHANGES +1218 -0
- data/ext/asyncengine_ext/libuv/src/ares/CMakeLists.txt +22 -0
- data/ext/asyncengine_ext/libuv/src/ares/NEWS +21 -0
- data/ext/asyncengine_ext/libuv/src/ares/README +60 -0
- data/ext/asyncengine_ext/libuv/src/ares/README.cares +13 -0
- data/ext/asyncengine_ext/libuv/src/ares/README.msvc +142 -0
- data/ext/asyncengine_ext/libuv/src/ares/README.node +21 -0
- data/ext/asyncengine_ext/libuv/src/ares/RELEASE-NOTES +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/TODO +23 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares__close_sockets.c +66 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares__get_hostent.c +263 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares__read_line.c +71 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares__timeval.c +111 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_cancel.c +63 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_data.c +190 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_data.h +65 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_destroy.c +105 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_dns.h +90 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_expand_name.c +200 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_expand_string.c +75 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_fds.c +63 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_free_hostent.c +42 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_free_string.c +25 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getenv.c +30 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getenv.h +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_gethostbyaddr.c +301 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_gethostbyname.c +523 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getnameinfo.c +427 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getopt.c +122 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getopt.h +53 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getsock.c +72 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_init.c +1809 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_iphlpapi.h +221 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_ipv6.h +78 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_library_init.c +142 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_library_init.h +42 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_llist.c +86 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_llist.h +42 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_mkquery.c +195 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_nowarn.c +181 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_nowarn.h +55 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_options.c +248 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_a_reply.c +263 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_aaaa_reply.c +259 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_mx_reply.c +170 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_ns_reply.c +182 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_ptr_reply.c +217 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_srv_reply.c +179 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_txt_reply.c +201 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_platform.c +11035 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_platform.h +43 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_private.h +355 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_process.c +1295 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_query.c +183 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_rules.h +144 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_search.c +321 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_send.c +134 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_setup.h +199 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strcasecmp.c +66 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strcasecmp.h +30 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strdup.c +42 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strdup.h +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strerror.c +56 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_timeout.c +80 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_version.c +11 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_writev.c +79 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_writev.h +36 -0
- data/ext/asyncengine_ext/libuv/src/ares/bitncmp.c +59 -0
- data/ext/asyncengine_ext/libuv/src/ares/bitncmp.h +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_cygwin/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_darwin/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_freebsd/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_linux/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_netbsd/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_openbsd/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_sunos/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_win32/ares_config.h +369 -0
- data/ext/asyncengine_ext/libuv/src/ares/get_ver.awk +35 -0
- data/ext/asyncengine_ext/libuv/src/ares/inet_net_pton.c +451 -0
- data/ext/asyncengine_ext/libuv/src/ares/inet_net_pton.h +31 -0
- data/ext/asyncengine_ext/libuv/src/ares/inet_ntop.c +208 -0
- data/ext/asyncengine_ext/libuv/src/ares/inet_ntop.h +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/nameser.h +203 -0
- data/ext/asyncengine_ext/libuv/src/ares/setup_once.h +504 -0
- data/ext/asyncengine_ext/libuv/src/ares/windows_port.c +22 -0
- data/ext/asyncengine_ext/libuv/src/unix/async.c +58 -0
- data/ext/asyncengine_ext/libuv/src/unix/cares.c +194 -0
- data/ext/asyncengine_ext/libuv/src/unix/check.c +80 -0
- data/ext/asyncengine_ext/libuv/src/unix/core.c +588 -0
- data/ext/asyncengine_ext/libuv/src/unix/cygwin.c +84 -0
- data/ext/asyncengine_ext/libuv/src/unix/darwin.c +341 -0
- data/ext/asyncengine_ext/libuv/src/unix/dl.c +91 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/Changes +63 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/LICENSE +36 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/Makefile.am +15 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/aclocal.m4 +8957 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/autogen.sh +3 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config.h.in +86 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_cygwin.h +80 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_darwin.h +141 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_freebsd.h +81 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_linux.h +94 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_netbsd.h +81 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_openbsd.h +137 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_sunos.h +84 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/configure.ac +22 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/demo.c +194 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/ecb.h +370 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/eio.3 +3428 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/eio.c +2593 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/eio.pod +969 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/libeio.m4 +195 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/xthread.h +164 -0
- data/ext/asyncengine_ext/libuv/src/unix/error.c +98 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/Changes +388 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/LICENSE +36 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/Makefile.am +18 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/Makefile.in +771 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/README +58 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/aclocal.m4 +8957 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/autogen.sh +6 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config.guess +1526 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config.h.in +125 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config.sub +1658 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_cygwin.h +123 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_darwin.h +122 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_freebsd.h +120 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_linux.h +141 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_netbsd.h +120 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_openbsd.h +126 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_sunos.h +122 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/configure +13037 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/configure.ac +18 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/depcomp +630 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev++.h +816 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev.3 +5311 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev.c +3921 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev.pod +5243 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_epoll.c +266 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_kqueue.c +235 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_poll.c +148 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_port.c +179 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_select.c +310 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_vars.h +203 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_win32.c +153 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_wrap.h +196 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/event.c +402 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/event.h +170 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/install-sh +294 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/libev.m4 +39 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ltmain.sh +8413 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/missing +336 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/mkinstalldirs +111 -0
- data/ext/asyncengine_ext/libuv/src/unix/freebsd.c +312 -0
- data/ext/asyncengine_ext/libuv/src/unix/fs.c +707 -0
- data/ext/asyncengine_ext/libuv/src/unix/idle.c +79 -0
- data/ext/asyncengine_ext/libuv/src/unix/internal.h +161 -0
- data/ext/asyncengine_ext/libuv/src/unix/kqueue.c +127 -0
- data/ext/asyncengine_ext/libuv/src/unix/linux/core.c +474 -0
- data/ext/asyncengine_ext/libuv/src/unix/linux/inotify.c +211 -0
- data/ext/asyncengine_ext/libuv/src/unix/linux/syscalls.c +230 -0
- data/ext/asyncengine_ext/libuv/src/unix/linux/syscalls.h +87 -0
- data/ext/asyncengine_ext/libuv/src/unix/loop.c +58 -0
- data/ext/asyncengine_ext/libuv/src/unix/netbsd.c +108 -0
- data/ext/asyncengine_ext/libuv/src/unix/openbsd.c +295 -0
- data/ext/asyncengine_ext/libuv/src/unix/pipe.c +266 -0
- data/ext/asyncengine_ext/libuv/src/unix/prepare.c +79 -0
- data/ext/asyncengine_ext/libuv/src/unix/process.c +369 -0
- data/ext/asyncengine_ext/libuv/src/unix/stream.c +1033 -0
- data/ext/asyncengine_ext/libuv/src/unix/sunos.c +466 -0
- data/ext/asyncengine_ext/libuv/src/unix/tcp.c +327 -0
- data/ext/asyncengine_ext/libuv/src/unix/thread.c +154 -0
- data/ext/asyncengine_ext/libuv/src/unix/timer.c +127 -0
- data/ext/asyncengine_ext/libuv/src/unix/tty.c +146 -0
- data/ext/asyncengine_ext/libuv/src/unix/udp.c +670 -0
- data/ext/asyncengine_ext/libuv/src/unix/uv-eio.c +124 -0
- data/ext/asyncengine_ext/libuv/src/unix/uv-eio.h +13 -0
- data/ext/asyncengine_ext/libuv/src/uv-common.c +354 -0
- data/ext/asyncengine_ext/libuv/src/uv-common.h +87 -0
- data/ext/asyncengine_ext/libuv/src/win/async.c +127 -0
- data/ext/asyncengine_ext/libuv/src/win/cares.c +290 -0
- data/ext/asyncengine_ext/libuv/src/win/core.c +270 -0
- data/ext/asyncengine_ext/libuv/src/win/dl.c +82 -0
- data/ext/asyncengine_ext/libuv/src/win/error.c +132 -0
- data/ext/asyncengine_ext/libuv/src/win/fs-event.c +514 -0
- data/ext/asyncengine_ext/libuv/src/win/fs.c +1576 -0
- data/ext/asyncengine_ext/libuv/src/win/getaddrinfo.c +372 -0
- data/ext/asyncengine_ext/libuv/src/win/handle.c +225 -0
- data/ext/asyncengine_ext/libuv/src/win/internal.h +352 -0
- data/ext/asyncengine_ext/libuv/src/win/loop-watcher.c +131 -0
- data/ext/asyncengine_ext/libuv/src/win/pipe.c +1661 -0
- data/ext/asyncengine_ext/libuv/src/win/process.c +1140 -0
- data/ext/asyncengine_ext/libuv/src/win/req.c +174 -0
- data/ext/asyncengine_ext/libuv/src/win/stream.c +201 -0
- data/ext/asyncengine_ext/libuv/src/win/tcp.c +1282 -0
- data/ext/asyncengine_ext/libuv/src/win/thread.c +332 -0
- data/ext/asyncengine_ext/libuv/src/win/threadpool.c +73 -0
- data/ext/asyncengine_ext/libuv/src/win/timer.c +276 -0
- data/ext/asyncengine_ext/libuv/src/win/tty.c +1795 -0
- data/ext/asyncengine_ext/libuv/src/win/udp.c +709 -0
- data/ext/asyncengine_ext/libuv/src/win/util.c +719 -0
- data/ext/asyncengine_ext/libuv/src/win/winapi.c +117 -0
- data/ext/asyncengine_ext/libuv/src/win/winapi.h +4419 -0
- data/ext/asyncengine_ext/libuv/src/win/winsock.c +470 -0
- data/ext/asyncengine_ext/libuv/src/win/winsock.h +138 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-ares.c +118 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-getaddrinfo.c +94 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-list.h +105 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-ping-pongs.c +213 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-pound.c +324 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-pump.c +462 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-sizes.c +40 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-spawn.c +156 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-tcp-write-batch.c +140 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-thread.c +64 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-udp-packet-storm.c +247 -0
- data/ext/asyncengine_ext/libuv/test/blackhole-server.c +118 -0
- data/ext/asyncengine_ext/libuv/test/dns-server.c +321 -0
- data/ext/asyncengine_ext/libuv/test/echo-server.c +370 -0
- data/ext/asyncengine_ext/libuv/test/fixtures/empty_file +0 -0
- data/ext/asyncengine_ext/libuv/test/fixtures/load_error.node +1 -0
- data/ext/asyncengine_ext/libuv/test/run-benchmarks.c +64 -0
- data/ext/asyncengine_ext/libuv/test/run-tests.c +108 -0
- data/ext/asyncengine_ext/libuv/test/runner-unix.c +315 -0
- data/ext/asyncengine_ext/libuv/test/runner-unix.h +36 -0
- data/ext/asyncengine_ext/libuv/test/runner-win.c +343 -0
- data/ext/asyncengine_ext/libuv/test/runner-win.h +42 -0
- data/ext/asyncengine_ext/libuv/test/runner.c +317 -0
- data/ext/asyncengine_ext/libuv/test/runner.h +159 -0
- data/ext/asyncengine_ext/libuv/test/task.h +117 -0
- data/ext/asyncengine_ext/libuv/test/test-async.c +216 -0
- data/ext/asyncengine_ext/libuv/test/test-callback-stack.c +203 -0
- data/ext/asyncengine_ext/libuv/test/test-connection-fail.c +148 -0
- data/ext/asyncengine_ext/libuv/test/test-counters-init.c +216 -0
- data/ext/asyncengine_ext/libuv/test/test-cwd-and-chdir.c +64 -0
- data/ext/asyncengine_ext/libuv/test/test-delayed-accept.c +197 -0
- data/ext/asyncengine_ext/libuv/test/test-dlerror.c +49 -0
- data/ext/asyncengine_ext/libuv/test/test-eio-overflow.c +90 -0
- data/ext/asyncengine_ext/libuv/test/test-error.c +59 -0
- data/ext/asyncengine_ext/libuv/test/test-fail-always.c +29 -0
- data/ext/asyncengine_ext/libuv/test/test-fs-event.c +442 -0
- data/ext/asyncengine_ext/libuv/test/test-fs.c +1731 -0
- data/ext/asyncengine_ext/libuv/test/test-get-currentexe.c +63 -0
- data/ext/asyncengine_ext/libuv/test/test-get-loadavg.c +36 -0
- data/ext/asyncengine_ext/libuv/test/test-get-memory.c +38 -0
- data/ext/asyncengine_ext/libuv/test/test-getaddrinfo.c +122 -0
- data/ext/asyncengine_ext/libuv/test/test-gethostbyname.c +189 -0
- data/ext/asyncengine_ext/libuv/test/test-getsockname.c +342 -0
- data/ext/asyncengine_ext/libuv/test/test-hrtime.c +51 -0
- data/ext/asyncengine_ext/libuv/test/test-idle.c +81 -0
- data/ext/asyncengine_ext/libuv/test/test-ipc-send-recv.c +209 -0
- data/ext/asyncengine_ext/libuv/test/test-ipc.c +614 -0
- data/ext/asyncengine_ext/libuv/test/test-list.h +371 -0
- data/ext/asyncengine_ext/libuv/test/test-loop-handles.c +359 -0
- data/ext/asyncengine_ext/libuv/test/test-multiple-listen.c +102 -0
- data/ext/asyncengine_ext/libuv/test/test-mutexes.c +63 -0
- data/ext/asyncengine_ext/libuv/test/test-pass-always.c +28 -0
- data/ext/asyncengine_ext/libuv/test/test-ping-pong.c +253 -0
- data/ext/asyncengine_ext/libuv/test/test-pipe-bind-error.c +140 -0
- data/ext/asyncengine_ext/libuv/test/test-pipe-connect-error.c +96 -0
- data/ext/asyncengine_ext/libuv/test/test-platform-output.c +87 -0
- data/ext/asyncengine_ext/libuv/test/test-process-title.c +42 -0
- data/ext/asyncengine_ext/libuv/test/test-ref.c +322 -0
- data/ext/asyncengine_ext/libuv/test/test-run-once.c +44 -0
- data/ext/asyncengine_ext/libuv/test/test-shutdown-close.c +103 -0
- data/ext/asyncengine_ext/libuv/test/test-shutdown-eof.c +183 -0
- data/ext/asyncengine_ext/libuv/test/test-spawn.c +499 -0
- data/ext/asyncengine_ext/libuv/test/test-stdio-over-pipes.c +256 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-bind-error.c +191 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-bind6-error.c +154 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-close.c +129 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-connect-error.c +70 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-connect6-error.c +68 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-flags.c +51 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-write-error.c +168 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-write-to-half-open-connection.c +135 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-writealot.c +195 -0
- data/ext/asyncengine_ext/libuv/test/test-thread.c +183 -0
- data/ext/asyncengine_ext/libuv/test/test-threadpool.c +57 -0
- data/ext/asyncengine_ext/libuv/test/test-timer-again.c +141 -0
- data/ext/asyncengine_ext/libuv/test/test-timer.c +130 -0
- data/ext/asyncengine_ext/libuv/test/test-tty.c +110 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-dgram-too-big.c +86 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-ipv6.c +156 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-multicast-join.c +139 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-multicast-ttl.c +86 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-options.c +86 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-send-and-recv.c +208 -0
- data/ext/asyncengine_ext/libuv/test/test-util.c +97 -0
- data/ext/asyncengine_ext/libuv/uv.gyp +435 -0
- data/ext/asyncengine_ext/libuv/vcbuild.bat +105 -0
- data/lib/asyncengine/version.rb +3 -0
- data/lib/asyncengine.rb +41 -0
- metadata +384 -0
@@ -0,0 +1,341 @@
|
|
1
|
+
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
2
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
3
|
+
* of this software and associated documentation files (the "Software"), to
|
4
|
+
* deal in the Software without restriction, including without limitation the
|
5
|
+
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
6
|
+
* sell copies of the Software, and to permit persons to whom the Software is
|
7
|
+
* furnished to do so, subject to the following conditions:
|
8
|
+
*
|
9
|
+
* The above copyright notice and this permission notice shall be included in
|
10
|
+
* all copies or substantial portions of the Software.
|
11
|
+
*
|
12
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
13
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
14
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
15
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
16
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
17
|
+
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
18
|
+
* IN THE SOFTWARE.
|
19
|
+
*/
|
20
|
+
|
21
|
+
#include "uv.h"
|
22
|
+
#include "internal.h"
|
23
|
+
|
24
|
+
#include <assert.h>
|
25
|
+
#include <stdint.h>
|
26
|
+
#include <errno.h>
|
27
|
+
|
28
|
+
#include <ifaddrs.h>
|
29
|
+
#include <net/if.h>
|
30
|
+
|
31
|
+
#include <TargetConditionals.h>
|
32
|
+
|
33
|
+
#if !TARGET_OS_IPHONE
|
34
|
+
#include <CoreServices/CoreServices.h>
|
35
|
+
#endif
|
36
|
+
|
37
|
+
#include <mach/mach.h>
|
38
|
+
#include <mach/mach_time.h>
|
39
|
+
#include <mach-o/dyld.h> /* _NSGetExecutablePath */
|
40
|
+
#include <sys/resource.h>
|
41
|
+
#include <sys/sysctl.h>
|
42
|
+
#include <unistd.h> /* sysconf */
|
43
|
+
|
44
|
+
static char *process_title;
|
45
|
+
|
46
|
+
#if TARGET_OS_IPHONE
|
47
|
+
/* see: http://developer.apple.com/library/mac/#qa/qa1398/_index.html */
|
48
|
+
uint64_t uv_hrtime() {
|
49
|
+
uint64_t time;
|
50
|
+
uint64_t enano;
|
51
|
+
static mach_timebase_info_data_t sTimebaseInfo;
|
52
|
+
|
53
|
+
time = mach_absolute_time();
|
54
|
+
|
55
|
+
if (0 == sTimebaseInfo.denom) {
|
56
|
+
(void)mach_timebase_info(&sTimebaseInfo);
|
57
|
+
}
|
58
|
+
|
59
|
+
enano = time * sTimebaseInfo.numer / sTimebaseInfo.denom;
|
60
|
+
|
61
|
+
return enano;
|
62
|
+
}
|
63
|
+
#else
|
64
|
+
uint64_t uv_hrtime() {
|
65
|
+
uint64_t time;
|
66
|
+
Nanoseconds enano;
|
67
|
+
time = mach_absolute_time();
|
68
|
+
enano = AbsoluteToNanoseconds(*(AbsoluteTime *)&time);
|
69
|
+
return (*(uint64_t *)&enano);
|
70
|
+
}
|
71
|
+
#endif
|
72
|
+
|
73
|
+
int uv_exepath(char* buffer, size_t* size) {
|
74
|
+
uint32_t usize;
|
75
|
+
int result;
|
76
|
+
char* path;
|
77
|
+
char* fullpath;
|
78
|
+
|
79
|
+
if (!buffer || !size) {
|
80
|
+
return -1;
|
81
|
+
}
|
82
|
+
|
83
|
+
usize = *size;
|
84
|
+
result = _NSGetExecutablePath(buffer, &usize);
|
85
|
+
if (result) return result;
|
86
|
+
|
87
|
+
path = (char*)malloc(2 * PATH_MAX);
|
88
|
+
fullpath = realpath(buffer, path);
|
89
|
+
|
90
|
+
if (fullpath == NULL) {
|
91
|
+
free(path);
|
92
|
+
return -1;
|
93
|
+
}
|
94
|
+
|
95
|
+
strncpy(buffer, fullpath, *size);
|
96
|
+
free(fullpath);
|
97
|
+
*size = strlen(buffer);
|
98
|
+
return 0;
|
99
|
+
}
|
100
|
+
|
101
|
+
|
102
|
+
uint64_t uv_get_free_memory(void) {
|
103
|
+
vm_statistics_data_t info;
|
104
|
+
mach_msg_type_number_t count = sizeof(info) / sizeof(integer_t);
|
105
|
+
|
106
|
+
if (host_statistics(mach_host_self(), HOST_VM_INFO,
|
107
|
+
(host_info_t)&info, &count) != KERN_SUCCESS) {
|
108
|
+
return -1;
|
109
|
+
}
|
110
|
+
|
111
|
+
return (uint64_t) info.free_count * sysconf(_SC_PAGESIZE);
|
112
|
+
}
|
113
|
+
|
114
|
+
|
115
|
+
uint64_t uv_get_total_memory(void) {
|
116
|
+
uint64_t info;
|
117
|
+
int which[] = {CTL_HW, HW_MEMSIZE};
|
118
|
+
size_t size = sizeof(info);
|
119
|
+
|
120
|
+
if (sysctl(which, 2, &info, &size, NULL, 0) < 0) {
|
121
|
+
return -1;
|
122
|
+
}
|
123
|
+
|
124
|
+
return (uint64_t) info;
|
125
|
+
}
|
126
|
+
|
127
|
+
|
128
|
+
void uv_loadavg(double avg[3]) {
|
129
|
+
struct loadavg info;
|
130
|
+
size_t size = sizeof(info);
|
131
|
+
int which[] = {CTL_VM, VM_LOADAVG};
|
132
|
+
|
133
|
+
if (sysctl(which, 2, &info, &size, NULL, 0) < 0) return;
|
134
|
+
|
135
|
+
avg[0] = (double) info.ldavg[0] / info.fscale;
|
136
|
+
avg[1] = (double) info.ldavg[1] / info.fscale;
|
137
|
+
avg[2] = (double) info.ldavg[2] / info.fscale;
|
138
|
+
}
|
139
|
+
|
140
|
+
|
141
|
+
char** uv_setup_args(int argc, char** argv) {
|
142
|
+
process_title = argc ? strdup(argv[0]) : NULL;
|
143
|
+
return argv;
|
144
|
+
}
|
145
|
+
|
146
|
+
|
147
|
+
uv_err_t uv_set_process_title(const char* title) {
|
148
|
+
/* TODO implement me */
|
149
|
+
return uv__new_artificial_error(UV_ENOSYS);
|
150
|
+
}
|
151
|
+
|
152
|
+
|
153
|
+
uv_err_t uv_get_process_title(char* buffer, size_t size) {
|
154
|
+
if (process_title) {
|
155
|
+
strncpy(buffer, process_title, size);
|
156
|
+
} else {
|
157
|
+
if (size > 0) {
|
158
|
+
buffer[0] = '\0';
|
159
|
+
}
|
160
|
+
}
|
161
|
+
|
162
|
+
return uv_ok_;
|
163
|
+
}
|
164
|
+
|
165
|
+
|
166
|
+
uv_err_t uv_resident_set_memory(size_t* rss) {
|
167
|
+
struct task_basic_info t_info;
|
168
|
+
mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT;
|
169
|
+
|
170
|
+
int r = task_info(mach_task_self(),
|
171
|
+
TASK_BASIC_INFO,
|
172
|
+
(task_info_t)&t_info,
|
173
|
+
&t_info_count);
|
174
|
+
|
175
|
+
if (r != KERN_SUCCESS) {
|
176
|
+
return uv__new_sys_error(errno);
|
177
|
+
}
|
178
|
+
|
179
|
+
*rss = t_info.resident_size;
|
180
|
+
|
181
|
+
return uv_ok_;
|
182
|
+
}
|
183
|
+
|
184
|
+
|
185
|
+
uv_err_t uv_uptime(double* uptime) {
|
186
|
+
time_t now;
|
187
|
+
struct timeval info;
|
188
|
+
size_t size = sizeof(info);
|
189
|
+
static int which[] = {CTL_KERN, KERN_BOOTTIME};
|
190
|
+
|
191
|
+
if (sysctl(which, 2, &info, &size, NULL, 0) < 0) {
|
192
|
+
return uv__new_sys_error(errno);
|
193
|
+
}
|
194
|
+
now = time(NULL);
|
195
|
+
|
196
|
+
*uptime = (double)(now - info.tv_sec);
|
197
|
+
|
198
|
+
return uv_ok_;
|
199
|
+
}
|
200
|
+
|
201
|
+
uv_err_t uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
|
202
|
+
unsigned int ticks = (unsigned int)sysconf(_SC_CLK_TCK),
|
203
|
+
multiplier = ((uint64_t)1000L / ticks);
|
204
|
+
char model[512];
|
205
|
+
uint64_t cpuspeed;
|
206
|
+
size_t size;
|
207
|
+
unsigned int i;
|
208
|
+
natural_t numcpus;
|
209
|
+
mach_msg_type_number_t msg_type;
|
210
|
+
processor_cpu_load_info_data_t *info;
|
211
|
+
uv_cpu_info_t* cpu_info;
|
212
|
+
|
213
|
+
size = sizeof(model);
|
214
|
+
if (sysctlbyname("hw.model", &model, &size, NULL, 0) < 0) {
|
215
|
+
return uv__new_sys_error(errno);
|
216
|
+
}
|
217
|
+
size = sizeof(cpuspeed);
|
218
|
+
if (sysctlbyname("hw.cpufrequency", &cpuspeed, &size, NULL, 0) < 0) {
|
219
|
+
return uv__new_sys_error(errno);
|
220
|
+
}
|
221
|
+
|
222
|
+
if (host_processor_info(mach_host_self(), PROCESSOR_CPU_LOAD_INFO, &numcpus,
|
223
|
+
(processor_info_array_t*)&info,
|
224
|
+
&msg_type) != KERN_SUCCESS) {
|
225
|
+
return uv__new_sys_error(errno);
|
226
|
+
}
|
227
|
+
|
228
|
+
*cpu_infos = (uv_cpu_info_t*)malloc(numcpus * sizeof(uv_cpu_info_t));
|
229
|
+
if (!(*cpu_infos)) {
|
230
|
+
return uv__new_artificial_error(UV_ENOMEM);
|
231
|
+
}
|
232
|
+
|
233
|
+
*count = numcpus;
|
234
|
+
|
235
|
+
for (i = 0; i < numcpus; i++) {
|
236
|
+
cpu_info = &(*cpu_infos)[i];
|
237
|
+
|
238
|
+
cpu_info->cpu_times.user = (uint64_t)(info[i].cpu_ticks[0]) * multiplier;
|
239
|
+
cpu_info->cpu_times.nice = (uint64_t)(info[i].cpu_ticks[3]) * multiplier;
|
240
|
+
cpu_info->cpu_times.sys = (uint64_t)(info[i].cpu_ticks[1]) * multiplier;
|
241
|
+
cpu_info->cpu_times.idle = (uint64_t)(info[i].cpu_ticks[2]) * multiplier;
|
242
|
+
cpu_info->cpu_times.irq = 0;
|
243
|
+
|
244
|
+
cpu_info->model = strdup(model);
|
245
|
+
cpu_info->speed = cpuspeed/1000000;
|
246
|
+
}
|
247
|
+
vm_deallocate(mach_task_self(), (vm_address_t)info, msg_type);
|
248
|
+
|
249
|
+
return uv_ok_;
|
250
|
+
}
|
251
|
+
|
252
|
+
|
253
|
+
void uv_free_cpu_info(uv_cpu_info_t* cpu_infos, int count) {
|
254
|
+
int i;
|
255
|
+
|
256
|
+
for (i = 0; i < count; i++) {
|
257
|
+
free(cpu_infos[i].model);
|
258
|
+
}
|
259
|
+
|
260
|
+
free(cpu_infos);
|
261
|
+
}
|
262
|
+
|
263
|
+
|
264
|
+
uv_err_t uv_interface_addresses(uv_interface_address_t** addresses,
|
265
|
+
int* count) {
|
266
|
+
struct ifaddrs *addrs, *ent;
|
267
|
+
char ip[INET6_ADDRSTRLEN];
|
268
|
+
uv_interface_address_t* address;
|
269
|
+
|
270
|
+
if (getifaddrs(&addrs) != 0) {
|
271
|
+
return uv__new_sys_error(errno);
|
272
|
+
}
|
273
|
+
|
274
|
+
*count = 0;
|
275
|
+
|
276
|
+
/* Count the number of interfaces */
|
277
|
+
for (ent = addrs; ent != NULL; ent = ent->ifa_next) {
|
278
|
+
if (!(ent->ifa_flags & IFF_UP && ent->ifa_flags & IFF_RUNNING) ||
|
279
|
+
(ent->ifa_addr == NULL) ||
|
280
|
+
(ent->ifa_addr->sa_family == AF_LINK)) {
|
281
|
+
continue;
|
282
|
+
}
|
283
|
+
|
284
|
+
(*count)++;
|
285
|
+
}
|
286
|
+
|
287
|
+
*addresses = (uv_interface_address_t*)
|
288
|
+
malloc(*count * sizeof(uv_interface_address_t));
|
289
|
+
if (!(*addresses)) {
|
290
|
+
return uv__new_artificial_error(UV_ENOMEM);
|
291
|
+
}
|
292
|
+
|
293
|
+
address = *addresses;
|
294
|
+
|
295
|
+
for (ent = addrs; ent != NULL; ent = ent->ifa_next) {
|
296
|
+
bzero(&ip, sizeof (ip));
|
297
|
+
if (!(ent->ifa_flags & IFF_UP && ent->ifa_flags & IFF_RUNNING)) {
|
298
|
+
continue;
|
299
|
+
}
|
300
|
+
|
301
|
+
if (ent->ifa_addr == NULL) {
|
302
|
+
continue;
|
303
|
+
}
|
304
|
+
|
305
|
+
/*
|
306
|
+
* On Mac OS X getifaddrs returns information related to Mac Addresses for
|
307
|
+
* various devices, such as firewire, etc. These are not relevant here.
|
308
|
+
*/
|
309
|
+
if (ent->ifa_addr->sa_family == AF_LINK) {
|
310
|
+
continue;
|
311
|
+
}
|
312
|
+
|
313
|
+
address->name = strdup(ent->ifa_name);
|
314
|
+
|
315
|
+
if (ent->ifa_addr->sa_family == AF_INET6) {
|
316
|
+
address->address.address6 = *((struct sockaddr_in6 *)ent->ifa_addr);
|
317
|
+
} else {
|
318
|
+
address->address.address4 = *((struct sockaddr_in *)ent->ifa_addr);
|
319
|
+
}
|
320
|
+
|
321
|
+
address->is_internal = ent->ifa_flags & IFF_LOOPBACK ? 1 : 0;
|
322
|
+
|
323
|
+
address++;
|
324
|
+
}
|
325
|
+
|
326
|
+
freeifaddrs(addrs);
|
327
|
+
|
328
|
+
return uv_ok_;
|
329
|
+
}
|
330
|
+
|
331
|
+
|
332
|
+
void uv_free_interface_addresses(uv_interface_address_t* addresses,
|
333
|
+
int count) {
|
334
|
+
int i;
|
335
|
+
|
336
|
+
for (i = 0; i < count; i++) {
|
337
|
+
free(addresses[i].name);
|
338
|
+
}
|
339
|
+
|
340
|
+
free(addresses);
|
341
|
+
}
|
@@ -0,0 +1,91 @@
|
|
1
|
+
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
2
|
+
*
|
3
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
* of this software and associated documentation files (the "Software"), to
|
5
|
+
* deal in the Software without restriction, including without limitation the
|
6
|
+
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
7
|
+
* sell copies of the Software, and to permit persons to whom the Software is
|
8
|
+
* furnished to do so, subject to the following conditions:
|
9
|
+
*
|
10
|
+
* The above copyright notice and this permission notice shall be included in
|
11
|
+
* all copies or substantial portions of the Software.
|
12
|
+
*
|
13
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
18
|
+
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
19
|
+
* IN THE SOFTWARE.
|
20
|
+
*/
|
21
|
+
|
22
|
+
#include "uv.h"
|
23
|
+
#include "internal.h"
|
24
|
+
|
25
|
+
#include <dlfcn.h>
|
26
|
+
#include <errno.h>
|
27
|
+
#include <string.h>
|
28
|
+
#include <locale.h>
|
29
|
+
|
30
|
+
/* The dl family of functions don't set errno. We need a good way to communicate
|
31
|
+
* errors to the caller but there is only dlerror() and that returns a string -
|
32
|
+
* a string that may or may not be safe to keep a reference to...
|
33
|
+
*/
|
34
|
+
static const uv_err_t uv_inval_ = { UV_EINVAL, EINVAL };
|
35
|
+
|
36
|
+
|
37
|
+
uv_err_t uv_dlopen(const char* filename, uv_lib_t* library) {
|
38
|
+
void* handle = dlopen(filename, RTLD_LAZY);
|
39
|
+
if (handle == NULL) {
|
40
|
+
return uv_inval_;
|
41
|
+
}
|
42
|
+
|
43
|
+
*library = handle;
|
44
|
+
return uv_ok_;
|
45
|
+
}
|
46
|
+
|
47
|
+
|
48
|
+
uv_err_t uv_dlclose(uv_lib_t library) {
|
49
|
+
if (dlclose(library) != 0) {
|
50
|
+
return uv_inval_;
|
51
|
+
}
|
52
|
+
|
53
|
+
return uv_ok_;
|
54
|
+
}
|
55
|
+
|
56
|
+
|
57
|
+
uv_err_t uv_dlsym(uv_lib_t library, const char* name, void** ptr) {
|
58
|
+
void* address;
|
59
|
+
|
60
|
+
/* Reset error status. */
|
61
|
+
dlerror();
|
62
|
+
|
63
|
+
address = dlsym(library, name);
|
64
|
+
|
65
|
+
if (dlerror()) {
|
66
|
+
return uv_inval_;
|
67
|
+
}
|
68
|
+
|
69
|
+
*ptr = (void*) address;
|
70
|
+
return uv_ok_;
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
const char *uv_dlerror(uv_lib_t library) {
|
75
|
+
const char* buf = NULL;
|
76
|
+
/* Make uv_dlerror() be independent of locale */
|
77
|
+
char* loc = setlocale(LC_MESSAGES, NULL);
|
78
|
+
if(strcmp(loc, "C") == 0) {
|
79
|
+
return strdup(dlerror());
|
80
|
+
} else {
|
81
|
+
setlocale(LC_MESSAGES, "C");
|
82
|
+
buf = dlerror();
|
83
|
+
setlocale(LC_MESSAGES, loc);
|
84
|
+
return strdup(buf);
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
void uv_dlerror_free(uv_lib_t library, const char *msg) {
|
90
|
+
free((void*)msg);
|
91
|
+
}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
Revision history for libeio
|
2
|
+
|
3
|
+
TODO: maybe add mincore support? available on at least darwin, solaris, linux, freebsd
|
4
|
+
TODO: openbsd requires stdint.h for intptr_t - why posix?
|
5
|
+
|
6
|
+
TODO: make mtouch/readdir maybe others cancellable in-request
|
7
|
+
TODO: fadvise request
|
8
|
+
1.0
|
9
|
+
- fix a deadlock where a wakeup signal could be missed when
|
10
|
+
a timeout occured at the same time.
|
11
|
+
- use nonstandard but maybe-working-on-bsd fork technique.
|
12
|
+
- use fewer time() syscalls when waiting for new requests.
|
13
|
+
- fix a path-memory-leak in readdir when using the wrappers
|
14
|
+
(reported by Thomas L. Shinnick).
|
15
|
+
- support a max_idle value of 0.
|
16
|
+
- support setting of idle timeout value (eio_set_idle_timeout).
|
17
|
+
- readdir: correctly handle malloc failures.
|
18
|
+
- readdir: new flags argument, can return inode
|
19
|
+
and possibly filetype, can sort in various ways.
|
20
|
+
- readdir: stop immediately when cancelled, do
|
21
|
+
not continue reading the directory.
|
22
|
+
- fix return value of eio_sendfile_sync.
|
23
|
+
- include sys/mman.h for msync.
|
24
|
+
- added EIO_STACKSIZE.
|
25
|
+
- added msync, mtouch support (untested).
|
26
|
+
- added sync_file_range (untested).
|
27
|
+
- fixed custom support.
|
28
|
+
- use a more robust feed-add detection method.
|
29
|
+
- "outbundled" from IO::AIO.
|
30
|
+
- eio_set_max_polltime did not properly convert time to ticks.
|
31
|
+
- tentatively support darwin in sendfile.
|
32
|
+
- fix freebsd/darwin sendfile.
|
33
|
+
- also use sendfile emulation for ENOTSUP and EOPNOTSUPP
|
34
|
+
error codes.
|
35
|
+
- add OS-independent EIO_MT_* and EIO_MS_* flag enums.
|
36
|
+
- add eio_statvfs/eio_fstatvfs.
|
37
|
+
- add eio_mlock/eio_mlockall and OS-independent MCL_* flag enums.
|
38
|
+
- no longer set errno to 0 before making syscalls, this only lures
|
39
|
+
people into the trap of believing errno shows success or failure.
|
40
|
+
- "fix" demo.c so that it works as non-root.
|
41
|
+
- suppoert utimes seperately from futimes, as some systems have
|
42
|
+
utimes but not futimes.
|
43
|
+
- use _POSIX_MEMLOCK_RANGE for mlock.
|
44
|
+
- do not (errornously) overwrite CFLAGS in configure.ac.
|
45
|
+
- mknod used int3 for dev_t (§2 bit), not offs (64 bit).
|
46
|
+
- fix memory corruption in eio_readdirx for the flags
|
47
|
+
combination EIO_READDIR_STAT_ORDER | EIO_READDIR_DIRS_FIRST.
|
48
|
+
- port to openbsd (another blatantly broken non-UNIX/POSIX platform).
|
49
|
+
- fix eio_custom prototype.
|
50
|
+
- work around a Linux (and likely FreeBSD and other kernels) bug
|
51
|
+
where sendfile would not transfer all the requested bytes on
|
52
|
+
large transfers, using a heuristic.
|
53
|
+
- use libecb, and apply lots of minor space optimisations.
|
54
|
+
- disable sendfile on darwin, broken as everything else.
|
55
|
+
- add realpath request and implementation.
|
56
|
+
- cancelled requests will still invoke their request callbacks.
|
57
|
+
- add fallocate.
|
58
|
+
- do not acquire any locks when forking.
|
59
|
+
- incorporated some mingw32 changes by traviscline.
|
60
|
+
- added syncfs support, using direct syscall.
|
61
|
+
- set thread name on linux (ps -L/Hcx, top, gdb).
|
62
|
+
- remove useless use of volatile variables.
|
63
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
All files in libeio are Copyright (C)2007,2008 Marc Alexander Lehmann.
|
2
|
+
|
3
|
+
Redistribution and use in source and binary forms, with or without
|
4
|
+
modification, are permitted provided that the following conditions are
|
5
|
+
met:
|
6
|
+
|
7
|
+
* Redistributions of source code must retain the above copyright
|
8
|
+
notice, this list of conditions and the following disclaimer.
|
9
|
+
|
10
|
+
* Redistributions in binary form must reproduce the above
|
11
|
+
copyright notice, this list of conditions and the following
|
12
|
+
disclaimer in the documentation and/or other materials provided
|
13
|
+
with the distribution.
|
14
|
+
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
16
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
17
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
18
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
19
|
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
20
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
21
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
22
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
23
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
24
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
25
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
26
|
+
|
27
|
+
Alternatively, the contents of this package may be used under the terms
|
28
|
+
of the GNU General Public License ("GPL") version 2 or any later version,
|
29
|
+
in which case the provisions of the GPL are applicable instead of the
|
30
|
+
above. If you wish to allow the use of your version of this package only
|
31
|
+
under the terms of the GPL and not to allow others to use your version of
|
32
|
+
this file under the BSD license, indicate your decision by deleting the
|
33
|
+
provisions above and replace them with the notice and other provisions
|
34
|
+
required by the GPL in this and the other files of this package. If you do
|
35
|
+
not delete the provisions above, a recipient may use your version of this
|
36
|
+
file under either the BSD or the GPL.
|
@@ -0,0 +1,15 @@
|
|
1
|
+
AUTOMAKE_OPTIONS = foreign no-dependencies
|
2
|
+
|
3
|
+
VERSION_INFO = 1:0
|
4
|
+
|
5
|
+
EXTRA_DIST = LICENSE Changes autogen.sh
|
6
|
+
|
7
|
+
#man_MANS = ev.3
|
8
|
+
|
9
|
+
include_HEADERS = eio.h
|
10
|
+
|
11
|
+
lib_LTLIBRARIES = libeio.la
|
12
|
+
|
13
|
+
libeio_la_SOURCES = eio.c ecb.h xthread.h config.h
|
14
|
+
libeio_la_LDFLAGS = -version-info $(VERSION_INFO)
|
15
|
+
|