foolio 0.0.3
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/.gitignore +22 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +29 -0
- data/Rakefile +21 -0
- data/examples/timer.rb +20 -0
- data/ext/foolio/extconf.rb +34 -0
- data/ext/foolio/foolio_ext.c +921 -0
- data/ext/foolio/gen.rb +50 -0
- data/ext/foolio/make_table.rb +12 -0
- data/ext/foolio/templ +243 -0
- data/ext/libuv/.gitignore +33 -0
- data/ext/libuv/.mailmap +13 -0
- data/ext/libuv/.travis.yml +9 -0
- data/ext/libuv/AUTHORS +61 -0
- data/ext/libuv/LICENSE +44 -0
- data/ext/libuv/Makefile +71 -0
- data/ext/libuv/README.md +90 -0
- data/ext/libuv/common.gypi +178 -0
- data/ext/libuv/gyp_uv +73 -0
- data/ext/libuv/include/uv-private/eio.h +403 -0
- data/ext/libuv/include/uv-private/ev.h +838 -0
- data/ext/libuv/include/uv-private/ngx-queue.h +108 -0
- data/ext/libuv/include/uv-private/tree.h +768 -0
- data/ext/libuv/include/uv-private/uv-unix.h +324 -0
- data/ext/libuv/include/uv-private/uv-win.h +517 -0
- data/ext/libuv/include/uv.h +1838 -0
- data/ext/libuv/src/fs-poll.c +235 -0
- data/ext/libuv/src/inet.c +293 -0
- data/ext/libuv/src/unix/async.c +148 -0
- data/ext/libuv/src/unix/core.c +696 -0
- data/ext/libuv/src/unix/cygwin.c +83 -0
- data/ext/libuv/src/unix/darwin.c +342 -0
- data/ext/libuv/src/unix/dl.c +83 -0
- data/ext/libuv/src/unix/eio/Changes +63 -0
- data/ext/libuv/src/unix/eio/LICENSE +36 -0
- data/ext/libuv/src/unix/eio/Makefile.am +15 -0
- data/ext/libuv/src/unix/eio/aclocal.m4 +8957 -0
- data/ext/libuv/src/unix/eio/autogen.sh +3 -0
- data/ext/libuv/src/unix/eio/config.h.in +86 -0
- data/ext/libuv/src/unix/eio/config_cygwin.h +80 -0
- data/ext/libuv/src/unix/eio/config_darwin.h +141 -0
- data/ext/libuv/src/unix/eio/config_freebsd.h +81 -0
- data/ext/libuv/src/unix/eio/config_linux.h +94 -0
- data/ext/libuv/src/unix/eio/config_netbsd.h +81 -0
- data/ext/libuv/src/unix/eio/config_openbsd.h +137 -0
- data/ext/libuv/src/unix/eio/config_sunos.h +84 -0
- data/ext/libuv/src/unix/eio/configure.ac +22 -0
- data/ext/libuv/src/unix/eio/demo.c +194 -0
- data/ext/libuv/src/unix/eio/ecb.h +370 -0
- data/ext/libuv/src/unix/eio/eio.3 +3428 -0
- data/ext/libuv/src/unix/eio/eio.c +2593 -0
- data/ext/libuv/src/unix/eio/eio.pod +969 -0
- data/ext/libuv/src/unix/eio/libeio.m4 +195 -0
- data/ext/libuv/src/unix/eio/xthread.h +164 -0
- data/ext/libuv/src/unix/error.c +105 -0
- data/ext/libuv/src/unix/ev/Changes +388 -0
- data/ext/libuv/src/unix/ev/LICENSE +36 -0
- data/ext/libuv/src/unix/ev/Makefile.am +18 -0
- data/ext/libuv/src/unix/ev/Makefile.in +771 -0
- data/ext/libuv/src/unix/ev/README +58 -0
- data/ext/libuv/src/unix/ev/aclocal.m4 +8957 -0
- data/ext/libuv/src/unix/ev/autogen.sh +6 -0
- data/ext/libuv/src/unix/ev/config.guess +1526 -0
- data/ext/libuv/src/unix/ev/config.h.in +125 -0
- data/ext/libuv/src/unix/ev/config.sub +1658 -0
- data/ext/libuv/src/unix/ev/config_cygwin.h +123 -0
- data/ext/libuv/src/unix/ev/config_darwin.h +122 -0
- data/ext/libuv/src/unix/ev/config_freebsd.h +120 -0
- data/ext/libuv/src/unix/ev/config_linux.h +141 -0
- data/ext/libuv/src/unix/ev/config_netbsd.h +120 -0
- data/ext/libuv/src/unix/ev/config_openbsd.h +126 -0
- data/ext/libuv/src/unix/ev/config_sunos.h +122 -0
- data/ext/libuv/src/unix/ev/configure +13037 -0
- data/ext/libuv/src/unix/ev/configure.ac +18 -0
- data/ext/libuv/src/unix/ev/depcomp +630 -0
- data/ext/libuv/src/unix/ev/ev++.h +816 -0
- data/ext/libuv/src/unix/ev/ev.3 +5311 -0
- data/ext/libuv/src/unix/ev/ev.c +3925 -0
- data/ext/libuv/src/unix/ev/ev.pod +5243 -0
- data/ext/libuv/src/unix/ev/ev_epoll.c +266 -0
- data/ext/libuv/src/unix/ev/ev_kqueue.c +235 -0
- data/ext/libuv/src/unix/ev/ev_poll.c +148 -0
- data/ext/libuv/src/unix/ev/ev_port.c +179 -0
- data/ext/libuv/src/unix/ev/ev_select.c +310 -0
- data/ext/libuv/src/unix/ev/ev_vars.h +203 -0
- data/ext/libuv/src/unix/ev/ev_win32.c +153 -0
- data/ext/libuv/src/unix/ev/ev_wrap.h +196 -0
- data/ext/libuv/src/unix/ev/event.c +402 -0
- data/ext/libuv/src/unix/ev/event.h +170 -0
- data/ext/libuv/src/unix/ev/install-sh +294 -0
- data/ext/libuv/src/unix/ev/libev.m4 +39 -0
- data/ext/libuv/src/unix/ev/ltmain.sh +8413 -0
- data/ext/libuv/src/unix/ev/missing +336 -0
- data/ext/libuv/src/unix/ev/mkinstalldirs +111 -0
- data/ext/libuv/src/unix/freebsd.c +326 -0
- data/ext/libuv/src/unix/fs.c +739 -0
- data/ext/libuv/src/unix/internal.h +188 -0
- data/ext/libuv/src/unix/kqueue.c +120 -0
- data/ext/libuv/src/unix/linux/inotify.c +239 -0
- data/ext/libuv/src/unix/linux/linux-core.c +557 -0
- data/ext/libuv/src/unix/linux/syscalls.c +388 -0
- data/ext/libuv/src/unix/linux/syscalls.h +124 -0
- data/ext/libuv/src/unix/loop-watcher.c +62 -0
- data/ext/libuv/src/unix/loop.c +94 -0
- data/ext/libuv/src/unix/netbsd.c +108 -0
- data/ext/libuv/src/unix/openbsd.c +295 -0
- data/ext/libuv/src/unix/pipe.c +259 -0
- data/ext/libuv/src/unix/poll.c +114 -0
- data/ext/libuv/src/unix/process.c +495 -0
- data/ext/libuv/src/unix/signal.c +269 -0
- data/ext/libuv/src/unix/stream.c +990 -0
- data/ext/libuv/src/unix/sunos.c +481 -0
- data/ext/libuv/src/unix/tcp.c +393 -0
- data/ext/libuv/src/unix/thread.c +251 -0
- data/ext/libuv/src/unix/timer.c +136 -0
- data/ext/libuv/src/unix/tty.c +145 -0
- data/ext/libuv/src/unix/udp.c +659 -0
- data/ext/libuv/src/unix/uv-eio.c +107 -0
- data/ext/libuv/src/unix/uv-eio.h +13 -0
- data/ext/libuv/src/uv-common.c +380 -0
- data/ext/libuv/src/uv-common.h +170 -0
- data/ext/libuv/src/win/async.c +100 -0
- data/ext/libuv/src/win/atomicops-inl.h +56 -0
- data/ext/libuv/src/win/core.c +278 -0
- data/ext/libuv/src/win/dl.c +86 -0
- data/ext/libuv/src/win/error.c +155 -0
- data/ext/libuv/src/win/fs-event.c +510 -0
- data/ext/libuv/src/win/fs.c +1948 -0
- data/ext/libuv/src/win/getaddrinfo.c +365 -0
- data/ext/libuv/src/win/handle-inl.h +149 -0
- data/ext/libuv/src/win/handle.c +154 -0
- data/ext/libuv/src/win/internal.h +343 -0
- data/ext/libuv/src/win/loop-watcher.c +122 -0
- data/ext/libuv/src/win/pipe.c +1672 -0
- data/ext/libuv/src/win/poll.c +616 -0
- data/ext/libuv/src/win/process-stdio.c +500 -0
- data/ext/libuv/src/win/process.c +1013 -0
- data/ext/libuv/src/win/req-inl.h +220 -0
- data/ext/libuv/src/win/req.c +25 -0
- data/ext/libuv/src/win/signal.c +57 -0
- data/ext/libuv/src/win/stream-inl.h +67 -0
- data/ext/libuv/src/win/stream.c +167 -0
- data/ext/libuv/src/win/tcp.c +1394 -0
- data/ext/libuv/src/win/thread.c +372 -0
- data/ext/libuv/src/win/threadpool.c +74 -0
- data/ext/libuv/src/win/timer.c +224 -0
- data/ext/libuv/src/win/tty.c +1799 -0
- data/ext/libuv/src/win/udp.c +716 -0
- data/ext/libuv/src/win/util.c +864 -0
- data/ext/libuv/src/win/winapi.c +132 -0
- data/ext/libuv/src/win/winapi.h +4452 -0
- data/ext/libuv/src/win/winsock.c +557 -0
- data/ext/libuv/src/win/winsock.h +171 -0
- data/ext/libuv/test/benchmark-async-pummel.c +97 -0
- data/ext/libuv/test/benchmark-async.c +137 -0
- data/ext/libuv/test/benchmark-fs-stat.c +135 -0
- data/ext/libuv/test/benchmark-getaddrinfo.c +94 -0
- data/ext/libuv/test/benchmark-list.h +127 -0
- data/ext/libuv/test/benchmark-loop-count.c +88 -0
- data/ext/libuv/test/benchmark-million-timers.c +65 -0
- data/ext/libuv/test/benchmark-ping-pongs.c +213 -0
- data/ext/libuv/test/benchmark-pound.c +324 -0
- data/ext/libuv/test/benchmark-pump.c +462 -0
- data/ext/libuv/test/benchmark-sizes.c +44 -0
- data/ext/libuv/test/benchmark-spawn.c +162 -0
- data/ext/libuv/test/benchmark-tcp-write-batch.c +140 -0
- data/ext/libuv/test/benchmark-thread.c +64 -0
- data/ext/libuv/test/benchmark-udp-packet-storm.c +247 -0
- data/ext/libuv/test/blackhole-server.c +118 -0
- data/ext/libuv/test/dns-server.c +321 -0
- data/ext/libuv/test/echo-server.c +378 -0
- data/ext/libuv/test/fixtures/empty_file +0 -0
- data/ext/libuv/test/fixtures/load_error.node +1 -0
- data/ext/libuv/test/run-benchmarks.c +64 -0
- data/ext/libuv/test/run-tests.c +138 -0
- data/ext/libuv/test/runner-unix.c +295 -0
- data/ext/libuv/test/runner-unix.h +36 -0
- data/ext/libuv/test/runner-win.c +285 -0
- data/ext/libuv/test/runner-win.h +42 -0
- data/ext/libuv/test/runner.c +355 -0
- data/ext/libuv/test/runner.h +159 -0
- data/ext/libuv/test/task.h +112 -0
- data/ext/libuv/test/test-async.c +118 -0
- data/ext/libuv/test/test-callback-order.c +76 -0
- data/ext/libuv/test/test-callback-stack.c +203 -0
- data/ext/libuv/test/test-connection-fail.c +148 -0
- data/ext/libuv/test/test-cwd-and-chdir.c +64 -0
- data/ext/libuv/test/test-delayed-accept.c +188 -0
- data/ext/libuv/test/test-dlerror.c +58 -0
- data/ext/libuv/test/test-error.c +59 -0
- data/ext/libuv/test/test-fail-always.c +29 -0
- data/ext/libuv/test/test-fs-event.c +474 -0
- data/ext/libuv/test/test-fs-poll.c +146 -0
- data/ext/libuv/test/test-fs.c +1843 -0
- data/ext/libuv/test/test-get-currentexe.c +63 -0
- data/ext/libuv/test/test-get-loadavg.c +36 -0
- data/ext/libuv/test/test-get-memory.c +38 -0
- data/ext/libuv/test/test-getaddrinfo.c +122 -0
- data/ext/libuv/test/test-getsockname.c +342 -0
- data/ext/libuv/test/test-hrtime.c +54 -0
- data/ext/libuv/test/test-idle.c +81 -0
- data/ext/libuv/test/test-ipc-send-recv.c +209 -0
- data/ext/libuv/test/test-ipc.c +620 -0
- data/ext/libuv/test/test-list.h +427 -0
- data/ext/libuv/test/test-loop-handles.c +336 -0
- data/ext/libuv/test/test-multiple-listen.c +102 -0
- data/ext/libuv/test/test-mutexes.c +63 -0
- data/ext/libuv/test/test-pass-always.c +28 -0
- data/ext/libuv/test/test-ping-pong.c +253 -0
- data/ext/libuv/test/test-pipe-bind-error.c +140 -0
- data/ext/libuv/test/test-pipe-connect-error.c +96 -0
- data/ext/libuv/test/test-platform-output.c +87 -0
- data/ext/libuv/test/test-poll-close.c +72 -0
- data/ext/libuv/test/test-poll.c +573 -0
- data/ext/libuv/test/test-process-title.c +49 -0
- data/ext/libuv/test/test-ref.c +338 -0
- data/ext/libuv/test/test-run-once.c +48 -0
- data/ext/libuv/test/test-semaphore.c +111 -0
- data/ext/libuv/test/test-shutdown-close.c +103 -0
- data/ext/libuv/test/test-shutdown-eof.c +183 -0
- data/ext/libuv/test/test-signal.c +162 -0
- data/ext/libuv/test/test-spawn.c +863 -0
- data/ext/libuv/test/test-stdio-over-pipes.c +246 -0
- data/ext/libuv/test/test-tcp-bind-error.c +191 -0
- data/ext/libuv/test/test-tcp-bind6-error.c +154 -0
- data/ext/libuv/test/test-tcp-close-while-connecting.c +80 -0
- data/ext/libuv/test/test-tcp-close.c +129 -0
- data/ext/libuv/test/test-tcp-connect-error-after-write.c +95 -0
- data/ext/libuv/test/test-tcp-connect-error.c +70 -0
- data/ext/libuv/test/test-tcp-connect-timeout.c +85 -0
- data/ext/libuv/test/test-tcp-connect6-error.c +68 -0
- data/ext/libuv/test/test-tcp-flags.c +51 -0
- data/ext/libuv/test/test-tcp-shutdown-after-write.c +131 -0
- data/ext/libuv/test/test-tcp-unexpected-read.c +113 -0
- data/ext/libuv/test/test-tcp-write-error.c +168 -0
- data/ext/libuv/test/test-tcp-write-to-half-open-connection.c +135 -0
- data/ext/libuv/test/test-tcp-writealot.c +170 -0
- data/ext/libuv/test/test-thread.c +183 -0
- data/ext/libuv/test/test-threadpool.c +57 -0
- data/ext/libuv/test/test-timer-again.c +141 -0
- data/ext/libuv/test/test-timer.c +152 -0
- data/ext/libuv/test/test-tty.c +110 -0
- data/ext/libuv/test/test-udp-dgram-too-big.c +86 -0
- data/ext/libuv/test/test-udp-ipv6.c +156 -0
- data/ext/libuv/test/test-udp-multicast-join.c +139 -0
- data/ext/libuv/test/test-udp-multicast-ttl.c +86 -0
- data/ext/libuv/test/test-udp-options.c +86 -0
- data/ext/libuv/test/test-udp-send-and-recv.c +208 -0
- data/ext/libuv/test/test-util.c +97 -0
- data/ext/libuv/test/test-walk-handles.c +77 -0
- data/ext/libuv/uv.gyp +375 -0
- data/ext/libuv/vcbuild.bat +105 -0
- data/foolio.gemspec +18 -0
- data/lib/foolio.rb +9 -0
- data/lib/foolio/handle.rb +27 -0
- data/lib/foolio/listener.rb +26 -0
- data/lib/foolio/loop.rb +79 -0
- data/lib/foolio/stream.rb +109 -0
- data/lib/foolio/version.rb +3 -0
- metadata +309 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
#! /bin/sh
|
|
2
|
+
# Common stub for a few missing GNU programs while installing.
|
|
3
|
+
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
|
|
4
|
+
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
|
5
|
+
|
|
6
|
+
# This program is free software; you can redistribute it and/or modify
|
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
|
8
|
+
# the Free Software Foundation; either version 2, or (at your option)
|
|
9
|
+
# any later version.
|
|
10
|
+
|
|
11
|
+
# This program is distributed in the hope that it will be useful,
|
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
# GNU General Public License for more details.
|
|
15
|
+
|
|
16
|
+
# You should have received a copy of the GNU General Public License
|
|
17
|
+
# along with this program; if not, write to the Free Software
|
|
18
|
+
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
19
|
+
# 02111-1307, USA.
|
|
20
|
+
|
|
21
|
+
# As a special exception to the GNU General Public License, if you
|
|
22
|
+
# distribute this file as part of a program that contains a
|
|
23
|
+
# configuration script generated by Autoconf, you may include it under
|
|
24
|
+
# the same distribution terms that you use for the rest of that program.
|
|
25
|
+
|
|
26
|
+
if test $# -eq 0; then
|
|
27
|
+
echo 1>&2 "Try \`$0 --help' for more information"
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
run=:
|
|
32
|
+
|
|
33
|
+
# In the cases where this matters, `missing' is being run in the
|
|
34
|
+
# srcdir already.
|
|
35
|
+
if test -f configure.ac; then
|
|
36
|
+
configure_ac=configure.ac
|
|
37
|
+
else
|
|
38
|
+
configure_ac=configure.in
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
case "$1" in
|
|
42
|
+
--run)
|
|
43
|
+
# Try to run requested program, and just exit if it succeeds.
|
|
44
|
+
run=
|
|
45
|
+
shift
|
|
46
|
+
"$@" && exit 0
|
|
47
|
+
;;
|
|
48
|
+
esac
|
|
49
|
+
|
|
50
|
+
# If it does not exist, or fails to run (possibly an outdated version),
|
|
51
|
+
# try to emulate it.
|
|
52
|
+
case "$1" in
|
|
53
|
+
|
|
54
|
+
-h|--h|--he|--hel|--help)
|
|
55
|
+
echo "\
|
|
56
|
+
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
|
57
|
+
|
|
58
|
+
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
|
59
|
+
error status if there is no known handling for PROGRAM.
|
|
60
|
+
|
|
61
|
+
Options:
|
|
62
|
+
-h, --help display this help and exit
|
|
63
|
+
-v, --version output version information and exit
|
|
64
|
+
--run try to run the given command, and emulate it if it fails
|
|
65
|
+
|
|
66
|
+
Supported PROGRAM values:
|
|
67
|
+
aclocal touch file \`aclocal.m4'
|
|
68
|
+
autoconf touch file \`configure'
|
|
69
|
+
autoheader touch file \`config.h.in'
|
|
70
|
+
automake touch all \`Makefile.in' files
|
|
71
|
+
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
|
72
|
+
flex create \`lex.yy.c', if possible, from existing .c
|
|
73
|
+
help2man touch the output file
|
|
74
|
+
lex create \`lex.yy.c', if possible, from existing .c
|
|
75
|
+
makeinfo touch the output file
|
|
76
|
+
tar try tar, gnutar, gtar, then tar without non-portable flags
|
|
77
|
+
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
|
|
78
|
+
;;
|
|
79
|
+
|
|
80
|
+
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
|
81
|
+
echo "missing 0.4 - GNU automake"
|
|
82
|
+
;;
|
|
83
|
+
|
|
84
|
+
-*)
|
|
85
|
+
echo 1>&2 "$0: Unknown \`$1' option"
|
|
86
|
+
echo 1>&2 "Try \`$0 --help' for more information"
|
|
87
|
+
exit 1
|
|
88
|
+
;;
|
|
89
|
+
|
|
90
|
+
aclocal*)
|
|
91
|
+
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
92
|
+
# We have it, but it failed.
|
|
93
|
+
exit 1
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
echo 1>&2 "\
|
|
97
|
+
WARNING: \`$1' is missing on your system. You should only need it if
|
|
98
|
+
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
|
99
|
+
to install the \`Automake' and \`Perl' packages. Grab them from
|
|
100
|
+
any GNU archive site."
|
|
101
|
+
touch aclocal.m4
|
|
102
|
+
;;
|
|
103
|
+
|
|
104
|
+
autoconf)
|
|
105
|
+
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
106
|
+
# We have it, but it failed.
|
|
107
|
+
exit 1
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
echo 1>&2 "\
|
|
111
|
+
WARNING: \`$1' is missing on your system. You should only need it if
|
|
112
|
+
you modified \`${configure_ac}'. You might want to install the
|
|
113
|
+
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
|
114
|
+
archive site."
|
|
115
|
+
touch configure
|
|
116
|
+
;;
|
|
117
|
+
|
|
118
|
+
autoheader)
|
|
119
|
+
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
120
|
+
# We have it, but it failed.
|
|
121
|
+
exit 1
|
|
122
|
+
fi
|
|
123
|
+
|
|
124
|
+
echo 1>&2 "\
|
|
125
|
+
WARNING: \`$1' is missing on your system. You should only need it if
|
|
126
|
+
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
|
127
|
+
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
|
128
|
+
from any GNU archive site."
|
|
129
|
+
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
|
130
|
+
test -z "$files" && files="config.h"
|
|
131
|
+
touch_files=
|
|
132
|
+
for f in $files; do
|
|
133
|
+
case "$f" in
|
|
134
|
+
*:*) touch_files="$touch_files "`echo "$f" |
|
|
135
|
+
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
|
136
|
+
*) touch_files="$touch_files $f.in";;
|
|
137
|
+
esac
|
|
138
|
+
done
|
|
139
|
+
touch $touch_files
|
|
140
|
+
;;
|
|
141
|
+
|
|
142
|
+
automake*)
|
|
143
|
+
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
144
|
+
# We have it, but it failed.
|
|
145
|
+
exit 1
|
|
146
|
+
fi
|
|
147
|
+
|
|
148
|
+
echo 1>&2 "\
|
|
149
|
+
WARNING: \`$1' is missing on your system. You should only need it if
|
|
150
|
+
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
|
151
|
+
You might want to install the \`Automake' and \`Perl' packages.
|
|
152
|
+
Grab them from any GNU archive site."
|
|
153
|
+
find . -type f -name Makefile.am -print |
|
|
154
|
+
sed 's/\.am$/.in/' |
|
|
155
|
+
while read f; do touch "$f"; done
|
|
156
|
+
;;
|
|
157
|
+
|
|
158
|
+
autom4te)
|
|
159
|
+
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
160
|
+
# We have it, but it failed.
|
|
161
|
+
exit 1
|
|
162
|
+
fi
|
|
163
|
+
|
|
164
|
+
echo 1>&2 "\
|
|
165
|
+
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
|
166
|
+
system. You might have modified some files without having the
|
|
167
|
+
proper tools for further handling them.
|
|
168
|
+
You can get \`$1' as part of \`Autoconf' from any GNU
|
|
169
|
+
archive site."
|
|
170
|
+
|
|
171
|
+
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
|
|
172
|
+
test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
|
|
173
|
+
if test -f "$file"; then
|
|
174
|
+
touch $file
|
|
175
|
+
else
|
|
176
|
+
test -z "$file" || exec >$file
|
|
177
|
+
echo "#! /bin/sh"
|
|
178
|
+
echo "# Created by GNU Automake missing as a replacement of"
|
|
179
|
+
echo "# $ $@"
|
|
180
|
+
echo "exit 0"
|
|
181
|
+
chmod +x $file
|
|
182
|
+
exit 1
|
|
183
|
+
fi
|
|
184
|
+
;;
|
|
185
|
+
|
|
186
|
+
bison|yacc)
|
|
187
|
+
echo 1>&2 "\
|
|
188
|
+
WARNING: \`$1' is missing on your system. You should only need it if
|
|
189
|
+
you modified a \`.y' file. You may need the \`Bison' package
|
|
190
|
+
in order for those modifications to take effect. You can get
|
|
191
|
+
\`Bison' from any GNU archive site."
|
|
192
|
+
rm -f y.tab.c y.tab.h
|
|
193
|
+
if [ $# -ne 1 ]; then
|
|
194
|
+
eval LASTARG="\${$#}"
|
|
195
|
+
case "$LASTARG" in
|
|
196
|
+
*.y)
|
|
197
|
+
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
|
198
|
+
if [ -f "$SRCFILE" ]; then
|
|
199
|
+
cp "$SRCFILE" y.tab.c
|
|
200
|
+
fi
|
|
201
|
+
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
|
202
|
+
if [ -f "$SRCFILE" ]; then
|
|
203
|
+
cp "$SRCFILE" y.tab.h
|
|
204
|
+
fi
|
|
205
|
+
;;
|
|
206
|
+
esac
|
|
207
|
+
fi
|
|
208
|
+
if [ ! -f y.tab.h ]; then
|
|
209
|
+
echo >y.tab.h
|
|
210
|
+
fi
|
|
211
|
+
if [ ! -f y.tab.c ]; then
|
|
212
|
+
echo 'main() { return 0; }' >y.tab.c
|
|
213
|
+
fi
|
|
214
|
+
;;
|
|
215
|
+
|
|
216
|
+
lex|flex)
|
|
217
|
+
echo 1>&2 "\
|
|
218
|
+
WARNING: \`$1' is missing on your system. You should only need it if
|
|
219
|
+
you modified a \`.l' file. You may need the \`Flex' package
|
|
220
|
+
in order for those modifications to take effect. You can get
|
|
221
|
+
\`Flex' from any GNU archive site."
|
|
222
|
+
rm -f lex.yy.c
|
|
223
|
+
if [ $# -ne 1 ]; then
|
|
224
|
+
eval LASTARG="\${$#}"
|
|
225
|
+
case "$LASTARG" in
|
|
226
|
+
*.l)
|
|
227
|
+
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
|
228
|
+
if [ -f "$SRCFILE" ]; then
|
|
229
|
+
cp "$SRCFILE" lex.yy.c
|
|
230
|
+
fi
|
|
231
|
+
;;
|
|
232
|
+
esac
|
|
233
|
+
fi
|
|
234
|
+
if [ ! -f lex.yy.c ]; then
|
|
235
|
+
echo 'main() { return 0; }' >lex.yy.c
|
|
236
|
+
fi
|
|
237
|
+
;;
|
|
238
|
+
|
|
239
|
+
help2man)
|
|
240
|
+
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
241
|
+
# We have it, but it failed.
|
|
242
|
+
exit 1
|
|
243
|
+
fi
|
|
244
|
+
|
|
245
|
+
echo 1>&2 "\
|
|
246
|
+
WARNING: \`$1' is missing on your system. You should only need it if
|
|
247
|
+
you modified a dependency of a manual page. You may need the
|
|
248
|
+
\`Help2man' package in order for those modifications to take
|
|
249
|
+
effect. You can get \`Help2man' from any GNU archive site."
|
|
250
|
+
|
|
251
|
+
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
|
252
|
+
if test -z "$file"; then
|
|
253
|
+
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
|
|
254
|
+
fi
|
|
255
|
+
if [ -f "$file" ]; then
|
|
256
|
+
touch $file
|
|
257
|
+
else
|
|
258
|
+
test -z "$file" || exec >$file
|
|
259
|
+
echo ".ab help2man is required to generate this page"
|
|
260
|
+
exit 1
|
|
261
|
+
fi
|
|
262
|
+
;;
|
|
263
|
+
|
|
264
|
+
makeinfo)
|
|
265
|
+
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
|
|
266
|
+
# We have makeinfo, but it failed.
|
|
267
|
+
exit 1
|
|
268
|
+
fi
|
|
269
|
+
|
|
270
|
+
echo 1>&2 "\
|
|
271
|
+
WARNING: \`$1' is missing on your system. You should only need it if
|
|
272
|
+
you modified a \`.texi' or \`.texinfo' file, or any other file
|
|
273
|
+
indirectly affecting the aspect of the manual. The spurious
|
|
274
|
+
call might also be the consequence of using a buggy \`make' (AIX,
|
|
275
|
+
DU, IRIX). You might want to install the \`Texinfo' package or
|
|
276
|
+
the \`GNU make' package. Grab either from any GNU archive site."
|
|
277
|
+
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
|
278
|
+
if test -z "$file"; then
|
|
279
|
+
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
|
280
|
+
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
|
|
281
|
+
fi
|
|
282
|
+
touch $file
|
|
283
|
+
;;
|
|
284
|
+
|
|
285
|
+
tar)
|
|
286
|
+
shift
|
|
287
|
+
if test -n "$run"; then
|
|
288
|
+
echo 1>&2 "ERROR: \`tar' requires --run"
|
|
289
|
+
exit 1
|
|
290
|
+
fi
|
|
291
|
+
|
|
292
|
+
# We have already tried tar in the generic part.
|
|
293
|
+
# Look for gnutar/gtar before invocation to avoid ugly error
|
|
294
|
+
# messages.
|
|
295
|
+
if (gnutar --version > /dev/null 2>&1); then
|
|
296
|
+
gnutar "$@" && exit 0
|
|
297
|
+
fi
|
|
298
|
+
if (gtar --version > /dev/null 2>&1); then
|
|
299
|
+
gtar "$@" && exit 0
|
|
300
|
+
fi
|
|
301
|
+
firstarg="$1"
|
|
302
|
+
if shift; then
|
|
303
|
+
case "$firstarg" in
|
|
304
|
+
*o*)
|
|
305
|
+
firstarg=`echo "$firstarg" | sed s/o//`
|
|
306
|
+
tar "$firstarg" "$@" && exit 0
|
|
307
|
+
;;
|
|
308
|
+
esac
|
|
309
|
+
case "$firstarg" in
|
|
310
|
+
*h*)
|
|
311
|
+
firstarg=`echo "$firstarg" | sed s/h//`
|
|
312
|
+
tar "$firstarg" "$@" && exit 0
|
|
313
|
+
;;
|
|
314
|
+
esac
|
|
315
|
+
fi
|
|
316
|
+
|
|
317
|
+
echo 1>&2 "\
|
|
318
|
+
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
|
319
|
+
You may want to install GNU tar or Free paxutils, or check the
|
|
320
|
+
command line arguments."
|
|
321
|
+
exit 1
|
|
322
|
+
;;
|
|
323
|
+
|
|
324
|
+
*)
|
|
325
|
+
echo 1>&2 "\
|
|
326
|
+
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
|
327
|
+
system. You might have modified some files without having the
|
|
328
|
+
proper tools for further handling them. Check the \`README' file,
|
|
329
|
+
it often tells you about the needed prerequisites for installing
|
|
330
|
+
this package. You may also peek at any GNU archive site, in case
|
|
331
|
+
some other package would contain this missing \`$1' program."
|
|
332
|
+
exit 1
|
|
333
|
+
;;
|
|
334
|
+
esac
|
|
335
|
+
|
|
336
|
+
exit 0
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#! /bin/sh
|
|
2
|
+
# mkinstalldirs --- make directory hierarchy
|
|
3
|
+
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
|
|
4
|
+
# Created: 1993-05-16
|
|
5
|
+
# Public domain
|
|
6
|
+
|
|
7
|
+
errstatus=0
|
|
8
|
+
dirmode=""
|
|
9
|
+
|
|
10
|
+
usage="\
|
|
11
|
+
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
|
|
12
|
+
|
|
13
|
+
# process command line arguments
|
|
14
|
+
while test $# -gt 0 ; do
|
|
15
|
+
case $1 in
|
|
16
|
+
-h | --help | --h*) # -h for help
|
|
17
|
+
echo "$usage" 1>&2
|
|
18
|
+
exit 0
|
|
19
|
+
;;
|
|
20
|
+
-m) # -m PERM arg
|
|
21
|
+
shift
|
|
22
|
+
test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
|
|
23
|
+
dirmode=$1
|
|
24
|
+
shift
|
|
25
|
+
;;
|
|
26
|
+
--) # stop option processing
|
|
27
|
+
shift
|
|
28
|
+
break
|
|
29
|
+
;;
|
|
30
|
+
-*) # unknown option
|
|
31
|
+
echo "$usage" 1>&2
|
|
32
|
+
exit 1
|
|
33
|
+
;;
|
|
34
|
+
*) # first non-opt arg
|
|
35
|
+
break
|
|
36
|
+
;;
|
|
37
|
+
esac
|
|
38
|
+
done
|
|
39
|
+
|
|
40
|
+
for file
|
|
41
|
+
do
|
|
42
|
+
if test -d "$file"; then
|
|
43
|
+
shift
|
|
44
|
+
else
|
|
45
|
+
break
|
|
46
|
+
fi
|
|
47
|
+
done
|
|
48
|
+
|
|
49
|
+
case $# in
|
|
50
|
+
0) exit 0 ;;
|
|
51
|
+
esac
|
|
52
|
+
|
|
53
|
+
case $dirmode in
|
|
54
|
+
'')
|
|
55
|
+
if mkdir -p -- . 2>/dev/null; then
|
|
56
|
+
echo "mkdir -p -- $*"
|
|
57
|
+
exec mkdir -p -- "$@"
|
|
58
|
+
fi
|
|
59
|
+
;;
|
|
60
|
+
*)
|
|
61
|
+
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
|
|
62
|
+
echo "mkdir -m $dirmode -p -- $*"
|
|
63
|
+
exec mkdir -m "$dirmode" -p -- "$@"
|
|
64
|
+
fi
|
|
65
|
+
;;
|
|
66
|
+
esac
|
|
67
|
+
|
|
68
|
+
for file
|
|
69
|
+
do
|
|
70
|
+
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
|
71
|
+
shift
|
|
72
|
+
|
|
73
|
+
pathcomp=
|
|
74
|
+
for d
|
|
75
|
+
do
|
|
76
|
+
pathcomp="$pathcomp$d"
|
|
77
|
+
case $pathcomp in
|
|
78
|
+
-*) pathcomp=./$pathcomp ;;
|
|
79
|
+
esac
|
|
80
|
+
|
|
81
|
+
if test ! -d "$pathcomp"; then
|
|
82
|
+
echo "mkdir $pathcomp"
|
|
83
|
+
|
|
84
|
+
mkdir "$pathcomp" || lasterr=$?
|
|
85
|
+
|
|
86
|
+
if test ! -d "$pathcomp"; then
|
|
87
|
+
errstatus=$lasterr
|
|
88
|
+
else
|
|
89
|
+
if test ! -z "$dirmode"; then
|
|
90
|
+
echo "chmod $dirmode $pathcomp"
|
|
91
|
+
lasterr=""
|
|
92
|
+
chmod "$dirmode" "$pathcomp" || lasterr=$?
|
|
93
|
+
|
|
94
|
+
if test ! -z "$lasterr"; then
|
|
95
|
+
errstatus=$lasterr
|
|
96
|
+
fi
|
|
97
|
+
fi
|
|
98
|
+
fi
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
pathcomp="$pathcomp/"
|
|
102
|
+
done
|
|
103
|
+
done
|
|
104
|
+
|
|
105
|
+
exit $errstatus
|
|
106
|
+
|
|
107
|
+
# Local Variables:
|
|
108
|
+
# mode: shell-script
|
|
109
|
+
# sh-indentation: 2
|
|
110
|
+
# End:
|
|
111
|
+
# mkinstalldirs ends here
|
|
@@ -0,0 +1,326 @@
|
|
|
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 <string.h>
|
|
26
|
+
#include <errno.h>
|
|
27
|
+
|
|
28
|
+
#include <kvm.h>
|
|
29
|
+
#include <paths.h>
|
|
30
|
+
#include <sys/user.h>
|
|
31
|
+
#include <sys/types.h>
|
|
32
|
+
#include <sys/resource.h>
|
|
33
|
+
#include <sys/sysctl.h>
|
|
34
|
+
#include <vm/vm_param.h> /* VM_LOADAVG */
|
|
35
|
+
#include <time.h>
|
|
36
|
+
#include <stdlib.h>
|
|
37
|
+
#include <unistd.h> /* sysconf */
|
|
38
|
+
#include <fcntl.h>
|
|
39
|
+
|
|
40
|
+
#undef NANOSEC
|
|
41
|
+
#define NANOSEC ((uint64_t) 1e9)
|
|
42
|
+
|
|
43
|
+
#ifndef CPUSTATES
|
|
44
|
+
# define CPUSTATES 5U
|
|
45
|
+
#endif
|
|
46
|
+
#ifndef CP_USER
|
|
47
|
+
# define CP_USER 0
|
|
48
|
+
# define CP_NICE 1
|
|
49
|
+
# define CP_SYS 2
|
|
50
|
+
# define CP_IDLE 3
|
|
51
|
+
# define CP_INTR 4
|
|
52
|
+
#endif
|
|
53
|
+
|
|
54
|
+
static char *process_title;
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
uint64_t uv_hrtime(void) {
|
|
58
|
+
struct timespec ts;
|
|
59
|
+
clock_gettime(CLOCK_MONOTONIC, &ts);
|
|
60
|
+
return (ts.tv_sec * NANOSEC + ts.tv_nsec);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
int uv_exepath(char* buffer, size_t* size) {
|
|
65
|
+
int mib[4];
|
|
66
|
+
size_t cb;
|
|
67
|
+
|
|
68
|
+
if (!buffer || !size) {
|
|
69
|
+
return -1;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
#ifdef __DragonFly__
|
|
73
|
+
mib[0] = CTL_KERN;
|
|
74
|
+
mib[1] = KERN_PROC;
|
|
75
|
+
mib[2] = KERN_PROC_ARGS;
|
|
76
|
+
mib[3] = getpid();
|
|
77
|
+
#else
|
|
78
|
+
mib[0] = CTL_KERN;
|
|
79
|
+
mib[1] = KERN_PROC;
|
|
80
|
+
mib[2] = KERN_PROC_PATHNAME;
|
|
81
|
+
mib[3] = -1;
|
|
82
|
+
#endif
|
|
83
|
+
|
|
84
|
+
cb = *size;
|
|
85
|
+
if (sysctl(mib, 4, buffer, &cb, NULL, 0) < 0) {
|
|
86
|
+
*size = 0;
|
|
87
|
+
return -1;
|
|
88
|
+
}
|
|
89
|
+
*size = strlen(buffer);
|
|
90
|
+
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
uint64_t uv_get_free_memory(void) {
|
|
96
|
+
int freecount;
|
|
97
|
+
size_t size = sizeof(freecount);
|
|
98
|
+
|
|
99
|
+
if(sysctlbyname("vm.stats.vm.v_free_count",
|
|
100
|
+
&freecount, &size, NULL, 0) == -1){
|
|
101
|
+
return -1;
|
|
102
|
+
}
|
|
103
|
+
return (uint64_t) freecount * sysconf(_SC_PAGESIZE);
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
uint64_t uv_get_total_memory(void) {
|
|
109
|
+
unsigned long info;
|
|
110
|
+
int which[] = {CTL_HW, HW_PHYSMEM};
|
|
111
|
+
|
|
112
|
+
size_t size = sizeof(info);
|
|
113
|
+
|
|
114
|
+
if (sysctl(which, 2, &info, &size, NULL, 0) < 0) {
|
|
115
|
+
return -1;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return (uint64_t) info;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
void uv_loadavg(double avg[3]) {
|
|
123
|
+
struct loadavg info;
|
|
124
|
+
size_t size = sizeof(info);
|
|
125
|
+
int which[] = {CTL_VM, VM_LOADAVG};
|
|
126
|
+
|
|
127
|
+
if (sysctl(which, 2, &info, &size, NULL, 0) < 0) return;
|
|
128
|
+
|
|
129
|
+
avg[0] = (double) info.ldavg[0] / info.fscale;
|
|
130
|
+
avg[1] = (double) info.ldavg[1] / info.fscale;
|
|
131
|
+
avg[2] = (double) info.ldavg[2] / info.fscale;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
char** uv_setup_args(int argc, char** argv) {
|
|
136
|
+
process_title = argc ? strdup(argv[0]) : NULL;
|
|
137
|
+
return argv;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
uv_err_t uv_set_process_title(const char* title) {
|
|
142
|
+
int oid[4];
|
|
143
|
+
|
|
144
|
+
if (process_title) free(process_title);
|
|
145
|
+
process_title = strdup(title);
|
|
146
|
+
|
|
147
|
+
oid[0] = CTL_KERN;
|
|
148
|
+
oid[1] = KERN_PROC;
|
|
149
|
+
oid[2] = KERN_PROC_ARGS;
|
|
150
|
+
oid[3] = getpid();
|
|
151
|
+
|
|
152
|
+
sysctl(oid,
|
|
153
|
+
ARRAY_SIZE(oid),
|
|
154
|
+
NULL,
|
|
155
|
+
NULL,
|
|
156
|
+
process_title,
|
|
157
|
+
strlen(process_title) + 1);
|
|
158
|
+
|
|
159
|
+
return uv_ok_;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
uv_err_t uv_get_process_title(char* buffer, size_t size) {
|
|
164
|
+
if (process_title) {
|
|
165
|
+
strncpy(buffer, process_title, size);
|
|
166
|
+
} else {
|
|
167
|
+
if (size > 0) {
|
|
168
|
+
buffer[0] = '\0';
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return uv_ok_;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
uv_err_t uv_resident_set_memory(size_t* rss) {
|
|
177
|
+
kvm_t *kd = NULL;
|
|
178
|
+
struct kinfo_proc *kinfo = NULL;
|
|
179
|
+
pid_t pid;
|
|
180
|
+
int nprocs;
|
|
181
|
+
size_t page_size = getpagesize();
|
|
182
|
+
|
|
183
|
+
pid = getpid();
|
|
184
|
+
|
|
185
|
+
kd = kvm_open(NULL, _PATH_DEVNULL, NULL, O_RDONLY, "kvm_open");
|
|
186
|
+
if (kd == NULL) goto error;
|
|
187
|
+
|
|
188
|
+
kinfo = kvm_getprocs(kd, KERN_PROC_PID, pid, &nprocs);
|
|
189
|
+
if (kinfo == NULL) goto error;
|
|
190
|
+
|
|
191
|
+
#ifdef __DragonFly__
|
|
192
|
+
*rss = kinfo->kp_vm_rssize * page_size;
|
|
193
|
+
#else
|
|
194
|
+
*rss = kinfo->ki_rssize * page_size;
|
|
195
|
+
#endif
|
|
196
|
+
|
|
197
|
+
kvm_close(kd);
|
|
198
|
+
|
|
199
|
+
return uv_ok_;
|
|
200
|
+
|
|
201
|
+
error:
|
|
202
|
+
if (kd) kvm_close(kd);
|
|
203
|
+
return uv__new_sys_error(errno);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
uv_err_t uv_uptime(double* uptime) {
|
|
208
|
+
time_t now;
|
|
209
|
+
struct timeval info;
|
|
210
|
+
size_t size = sizeof(info);
|
|
211
|
+
static int which[] = {CTL_KERN, KERN_BOOTTIME};
|
|
212
|
+
|
|
213
|
+
if (sysctl(which, 2, &info, &size, NULL, 0) < 0) {
|
|
214
|
+
return uv__new_sys_error(errno);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
now = time(NULL);
|
|
218
|
+
|
|
219
|
+
*uptime = (double)(now - info.tv_sec);
|
|
220
|
+
return uv_ok_;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
uv_err_t uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
|
|
225
|
+
unsigned int ticks = (unsigned int)sysconf(_SC_CLK_TCK),
|
|
226
|
+
multiplier = ((uint64_t)1000L / ticks), cpuspeed, maxcpus,
|
|
227
|
+
cur = 0;
|
|
228
|
+
uv_cpu_info_t* cpu_info;
|
|
229
|
+
char model[512];
|
|
230
|
+
long* cp_times;
|
|
231
|
+
int numcpus;
|
|
232
|
+
size_t size;
|
|
233
|
+
int i;
|
|
234
|
+
|
|
235
|
+
size = sizeof(model);
|
|
236
|
+
if (sysctlbyname("hw.model", &model, &size, NULL, 0) < 0) {
|
|
237
|
+
return uv__new_sys_error(errno);
|
|
238
|
+
}
|
|
239
|
+
size = sizeof(numcpus);
|
|
240
|
+
if (sysctlbyname("hw.ncpu", &numcpus, &size, NULL, 0) < 0) {
|
|
241
|
+
return uv__new_sys_error(errno);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
*cpu_infos = (uv_cpu_info_t*)malloc(numcpus * sizeof(uv_cpu_info_t));
|
|
245
|
+
if (!(*cpu_infos)) {
|
|
246
|
+
return uv__new_artificial_error(UV_ENOMEM);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
*count = numcpus;
|
|
250
|
+
|
|
251
|
+
size = sizeof(cpuspeed);
|
|
252
|
+
if (sysctlbyname("hw.clockrate", &cpuspeed, &size, NULL, 0) < 0) {
|
|
253
|
+
free(*cpu_infos);
|
|
254
|
+
return uv__new_sys_error(errno);
|
|
255
|
+
}
|
|
256
|
+
/* kern.cp_times on FreeBSD i386 gives an array up to maxcpus instead of ncpu */
|
|
257
|
+
size = sizeof(maxcpus);
|
|
258
|
+
#ifdef __DragonFly__
|
|
259
|
+
if (sysctlbyname("hw.ncpu", &maxcpus, &size, NULL, 0) < 0) {
|
|
260
|
+
free(*cpu_infos);
|
|
261
|
+
return uv__new_sys_error(errno);
|
|
262
|
+
}
|
|
263
|
+
#else
|
|
264
|
+
if (sysctlbyname("kern.smp.maxcpus", &maxcpus, &size, NULL, 0) < 0) {
|
|
265
|
+
free(*cpu_infos);
|
|
266
|
+
return uv__new_sys_error(errno);
|
|
267
|
+
}
|
|
268
|
+
#endif
|
|
269
|
+
|
|
270
|
+
size = maxcpus * CPUSTATES * sizeof(long);
|
|
271
|
+
|
|
272
|
+
cp_times = malloc(size);
|
|
273
|
+
if (cp_times == NULL) {
|
|
274
|
+
free(*cpu_infos);
|
|
275
|
+
return uv__new_sys_error(ENOMEM);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
if (sysctlbyname("kern.cp_times", cp_times, &size, NULL, 0) < 0) {
|
|
279
|
+
free(cp_times);
|
|
280
|
+
free(*cpu_infos);
|
|
281
|
+
return uv__new_sys_error(errno);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
for (i = 0; i < numcpus; i++) {
|
|
285
|
+
cpu_info = &(*cpu_infos)[i];
|
|
286
|
+
|
|
287
|
+
cpu_info->cpu_times.user = (uint64_t)(cp_times[CP_USER+cur]) * multiplier;
|
|
288
|
+
cpu_info->cpu_times.nice = (uint64_t)(cp_times[CP_NICE+cur]) * multiplier;
|
|
289
|
+
cpu_info->cpu_times.sys = (uint64_t)(cp_times[CP_SYS+cur]) * multiplier;
|
|
290
|
+
cpu_info->cpu_times.idle = (uint64_t)(cp_times[CP_IDLE+cur]) * multiplier;
|
|
291
|
+
cpu_info->cpu_times.irq = (uint64_t)(cp_times[CP_INTR+cur]) * multiplier;
|
|
292
|
+
|
|
293
|
+
cpu_info->model = strdup(model);
|
|
294
|
+
cpu_info->speed = cpuspeed;
|
|
295
|
+
|
|
296
|
+
cur+=CPUSTATES;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
free(cp_times);
|
|
300
|
+
return uv_ok_;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
void uv_free_cpu_info(uv_cpu_info_t* cpu_infos, int count) {
|
|
305
|
+
int i;
|
|
306
|
+
|
|
307
|
+
for (i = 0; i < count; i++) {
|
|
308
|
+
free(cpu_infos[i].model);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
free(cpu_infos);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
uv_err_t uv_interface_addresses(uv_interface_address_t** addresses,
|
|
316
|
+
int* count) {
|
|
317
|
+
/* TODO: implement */
|
|
318
|
+
*addresses = NULL;
|
|
319
|
+
*count = 0;
|
|
320
|
+
return uv_ok_;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
void uv_free_interface_addresses(uv_interface_address_t* addresses,
|
|
325
|
+
int count) {
|
|
326
|
+
}
|