cool.io 1.4.6-x86-mingw32 → 1.5.3-x86-mingw32
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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/CHANGES.md +20 -0
- data/ext/cool.io/iowatcher.c +2 -2
- data/ext/cool.io/timer_watcher.c +1 -1
- data/ext/libev/Changes +20 -14
- data/ext/libev/ev.c +272 -92
- data/ext/libev/ev.h +5 -4
- data/ext/libev/ev_epoll.c +8 -5
- data/ext/libev/ev_kqueue.c +8 -4
- data/ext/libev/ev_poll.c +6 -3
- data/ext/libev/ev_port.c +8 -4
- data/ext/libev/ev_select.c +4 -2
- data/ext/libev/ev_win32.c +2 -3
- data/lib/cool.io/socket.rb +3 -1
- data/lib/cool.io/version.rb +1 -1
- data/libev_ruby_gil.diff +175 -0
- data/{ext/libev/win_select.patch → libev_win_select.diff} +28 -13
- metadata +4 -4
- data/ext/libev/ruby_gil.patch +0 -97
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ffe3203d29f0ed72e9978270618d07e2f9cb4ef
|
4
|
+
data.tar.gz: 0c79a4cc0dfa15df6116615bc319d1de4506ea48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aff307812a4e3f93818c58e8dc2756ad29e116af9bc7cdf6d17b251de599fc69142a675dba32cf013d14cae48c178c9446464b6ffd688044109c42369762e0ec
|
7
|
+
data.tar.gz: ca8ce9b3bc452423ae14c7d5d47cc5d6d29f57fbef31ac45ebe59f4183a7936656587ce59dea83858905930859f201e83f4d5fa07b5fa8f08f9063c0e522ba4a
|
data/.travis.yml
CHANGED
data/CHANGES.md
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
1.5.3
|
2
|
+
-----
|
3
|
+
|
4
|
+
* Fix invalid IOWatcher's rb_funcall that causes ArgumentError with ruby 2.5 and clang
|
5
|
+
|
6
|
+
1.5.2
|
7
|
+
-----
|
8
|
+
|
9
|
+
* Fix invalid TimerWatcher's rb_funcall that causes ArgumentError with ruby 2.5 and clang
|
10
|
+
|
11
|
+
1.5.1
|
12
|
+
-----
|
13
|
+
|
14
|
+
* Don't raise an exception when peername failed
|
15
|
+
|
16
|
+
1.5.0
|
17
|
+
-----
|
18
|
+
|
19
|
+
* Update libev to 4.24
|
20
|
+
|
1
21
|
1.4.6
|
2
22
|
-----
|
3
23
|
|
data/ext/cool.io/iowatcher.c
CHANGED
@@ -181,9 +181,9 @@ static void Coolio_IOWatcher_libev_callback(struct ev_loop *ev_loop, struct ev_i
|
|
181
181
|
static void Coolio_IOWatcher_dispatch_callback(VALUE self, int revents)
|
182
182
|
{
|
183
183
|
if(revents & EV_READ)
|
184
|
-
rb_funcall(self, rb_intern("on_readable"), 0
|
184
|
+
rb_funcall(self, rb_intern("on_readable"), 0);
|
185
185
|
else if(revents & EV_WRITE)
|
186
|
-
rb_funcall(self, rb_intern("on_writable"), 0
|
186
|
+
rb_funcall(self, rb_intern("on_writable"), 0);
|
187
187
|
else
|
188
188
|
rb_raise(rb_eRuntimeError, "unknown revents value for ev_io: %d", revents);
|
189
189
|
}
|
data/ext/cool.io/timer_watcher.c
CHANGED
@@ -213,7 +213,7 @@ static void Coolio_TimerWatcher_libev_callback(struct ev_loop *ev_loop, struct e
|
|
213
213
|
static void Coolio_TimerWatcher_dispatch_callback(VALUE self, int revents)
|
214
214
|
{
|
215
215
|
if(revents & EV_TIMEOUT)
|
216
|
-
rb_funcall(self, rb_intern("on_timer"), 0
|
216
|
+
rb_funcall(self, rb_intern("on_timer"), 0);
|
217
217
|
else
|
218
218
|
rb_raise(rb_eRuntimeError, "unknown revents value for ev_timer: %d", revents);
|
219
219
|
}
|
data/ext/libev/Changes
CHANGED
@@ -1,19 +1,24 @@
|
|
1
1
|
Revision history for libev, a high-performance and full-featured event loop.
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
3
|
+
4.24 Wed Dec 28 05:19:55 CET 2016
|
4
|
+
- bump version to 4.24, as the release tarball inexplicably
|
5
|
+
didn't have the right version in ev.h, even though the cvs-tagged
|
6
|
+
version did have the right one (reported by Ales Teska).
|
7
|
+
|
8
|
+
4.23 Wed Nov 16 18:23:41 CET 2016
|
9
|
+
- move some declarations at the beginning to help certain retarded
|
10
|
+
microsoft compilers, even though their documentation claims
|
11
|
+
otherwise (reported by Ruslan Osmanov).
|
12
|
+
|
13
|
+
4.22 Sun Dec 20 22:11:50 CET 2015
|
14
|
+
- when epoll detects unremovable fds in the fd set, rebuild
|
15
|
+
only the epoll descriptor, not the signal pipe, to avoid
|
16
|
+
SIGPIPE in ev_async_send. This doesn't solve it on fork,
|
17
|
+
so document what needs to be done in ev_loop_fork
|
18
|
+
(analyzed by Benjamin Mahler).
|
19
|
+
- remove superfluous sys/timeb.h include on win32
|
20
|
+
(analyzed by Jason Madden).
|
21
|
+
- updated libecb.
|
17
22
|
|
18
23
|
4.20 Sat Jun 20 13:01:43 CEST 2015
|
19
24
|
- prefer noexcept over throw () with C++ 11.
|
@@ -505,3 +510,4 @@ TODO: document requirements for function pointers and calling conventions.
|
|
505
510
|
|
506
511
|
0.1 Wed Oct 31 21:31:48 CET 2007
|
507
512
|
- original version; hacked together in <24h.
|
513
|
+
|
data/ext/libev/ev.c
CHANGED
@@ -539,7 +539,7 @@ struct signalfd_siginfo
|
|
539
539
|
#define ECB_H
|
540
540
|
|
541
541
|
/* 16 bits major, 16 bits minor */
|
542
|
-
#define ECB_VERSION
|
542
|
+
#define ECB_VERSION 0x00010005
|
543
543
|
|
544
544
|
#ifdef _WIN32
|
545
545
|
typedef signed char int8_t;
|
@@ -566,7 +566,7 @@ struct signalfd_siginfo
|
|
566
566
|
#endif
|
567
567
|
#else
|
568
568
|
#include <inttypes.h>
|
569
|
-
#if
|
569
|
+
#if (defined INTPTR_MAX ? INTPTR_MAX : ULONG_MAX) > 0xffffffffU
|
570
570
|
#define ECB_PTRSIZE 8
|
571
571
|
#else
|
572
572
|
#define ECB_PTRSIZE 4
|
@@ -654,6 +654,10 @@ struct signalfd_siginfo
|
|
654
654
|
#include <builtins.h>
|
655
655
|
#endif
|
656
656
|
|
657
|
+
#if 1400 <= _MSC_VER
|
658
|
+
#include <intrin.h> /* fence functions _ReadBarrier, also bit search functions _BitScanReverse */
|
659
|
+
#endif
|
660
|
+
|
657
661
|
#ifndef ECB_MEMORY_FENCE
|
658
662
|
#if ECB_GCC_VERSION(2,5) || defined __INTEL_COMPILER || (__llvm__ && __GNUC__) || __SUNPRO_C >= 0x5110 || __SUNPRO_CC >= 0x5110
|
659
663
|
#if __i386 || __i386__
|
@@ -666,15 +670,23 @@ struct signalfd_siginfo
|
|
666
670
|
#define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("")
|
667
671
|
#elif __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__
|
668
672
|
#define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory")
|
673
|
+
#elif defined __ARM_ARCH_2__ \
|
674
|
+
|| defined __ARM_ARCH_3__ || defined __ARM_ARCH_3M__ \
|
675
|
+
|| defined __ARM_ARCH_4__ || defined __ARM_ARCH_4T__ \
|
676
|
+
|| defined __ARM_ARCH_5__ || defined __ARM_ARCH_5E__ \
|
677
|
+
|| defined __ARM_ARCH_5T__ || defined __ARM_ARCH_5TE__ \
|
678
|
+
|| defined __ARM_ARCH_5TEJ__
|
679
|
+
/* should not need any, unless running old code on newer cpu - arm doesn't support that */
|
669
680
|
#elif defined __ARM_ARCH_6__ || defined __ARM_ARCH_6J__ \
|
670
|
-
|| defined __ARM_ARCH_6K__ || defined __ARM_ARCH_6ZK__
|
681
|
+
|| defined __ARM_ARCH_6K__ || defined __ARM_ARCH_6ZK__ \
|
682
|
+
|| defined __ARM_ARCH_6T2__
|
671
683
|
#define ECB_MEMORY_FENCE __asm__ __volatile__ ("mcr p15,0,%0,c7,c10,5" : : "r" (0) : "memory")
|
672
684
|
#elif defined __ARM_ARCH_7__ || defined __ARM_ARCH_7A__ \
|
673
|
-
|| defined
|
685
|
+
|| defined __ARM_ARCH_7R__ || defined __ARM_ARCH_7M__
|
674
686
|
#define ECB_MEMORY_FENCE __asm__ __volatile__ ("dmb" : : : "memory")
|
675
687
|
#elif __aarch64__
|
676
688
|
#define ECB_MEMORY_FENCE __asm__ __volatile__ ("dmb ish" : : : "memory")
|
677
|
-
#elif (__sparc || __sparc__) && !__sparcv8
|
689
|
+
#elif (__sparc || __sparc__) && !(__sparc_v8__ || defined __sparcv8)
|
678
690
|
#define ECB_MEMORY_FENCE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad | #StoreStore | #StoreLoad" : : : "memory")
|
679
691
|
#define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad" : : : "memory")
|
680
692
|
#define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("membar #LoadStore | #StoreStore")
|
@@ -922,6 +934,11 @@ typedef int ecb_bool;
|
|
922
934
|
ecb_function_ ecb_const int
|
923
935
|
ecb_ctz32 (uint32_t x)
|
924
936
|
{
|
937
|
+
#if 1400 <= _MSC_VER && (_M_IX86 || _M_X64 || _M_IA64 || _M_ARM)
|
938
|
+
unsigned long r;
|
939
|
+
_BitScanForward (&r, x);
|
940
|
+
return (int)r;
|
941
|
+
#else
|
925
942
|
int r = 0;
|
926
943
|
|
927
944
|
x &= ~x + 1; /* this isolates the lowest bit */
|
@@ -941,14 +958,21 @@ typedef int ecb_bool;
|
|
941
958
|
#endif
|
942
959
|
|
943
960
|
return r;
|
961
|
+
#endif
|
944
962
|
}
|
945
963
|
|
946
964
|
ecb_function_ ecb_const int ecb_ctz64 (uint64_t x);
|
947
965
|
ecb_function_ ecb_const int
|
948
966
|
ecb_ctz64 (uint64_t x)
|
949
967
|
{
|
950
|
-
|
968
|
+
#if 1400 <= _MSC_VER && (_M_X64 || _M_IA64 || _M_ARM)
|
969
|
+
unsigned long r;
|
970
|
+
_BitScanForward64 (&r, x);
|
971
|
+
return (int)r;
|
972
|
+
#else
|
973
|
+
int shift = x & 0xffffffff ? 0 : 32;
|
951
974
|
return ecb_ctz32 (x >> shift) + shift;
|
975
|
+
#endif
|
952
976
|
}
|
953
977
|
|
954
978
|
ecb_function_ ecb_const int ecb_popcount32 (uint32_t x);
|
@@ -966,6 +990,11 @@ typedef int ecb_bool;
|
|
966
990
|
ecb_function_ ecb_const int ecb_ld32 (uint32_t x);
|
967
991
|
ecb_function_ ecb_const int ecb_ld32 (uint32_t x)
|
968
992
|
{
|
993
|
+
#if 1400 <= _MSC_VER && (_M_IX86 || _M_X64 || _M_IA64 || _M_ARM)
|
994
|
+
unsigned long r;
|
995
|
+
_BitScanReverse (&r, x);
|
996
|
+
return (int)r;
|
997
|
+
#else
|
969
998
|
int r = 0;
|
970
999
|
|
971
1000
|
if (x >> 16) { x >>= 16; r += 16; }
|
@@ -975,16 +1004,23 @@ typedef int ecb_bool;
|
|
975
1004
|
if (x >> 1) { r += 1; }
|
976
1005
|
|
977
1006
|
return r;
|
1007
|
+
#endif
|
978
1008
|
}
|
979
1009
|
|
980
1010
|
ecb_function_ ecb_const int ecb_ld64 (uint64_t x);
|
981
1011
|
ecb_function_ ecb_const int ecb_ld64 (uint64_t x)
|
982
1012
|
{
|
1013
|
+
#if 1400 <= _MSC_VER && (_M_X64 || _M_IA64 || _M_ARM)
|
1014
|
+
unsigned long r;
|
1015
|
+
_BitScanReverse64 (&r, x);
|
1016
|
+
return (int)r;
|
1017
|
+
#else
|
983
1018
|
int r = 0;
|
984
1019
|
|
985
1020
|
if (x >> 32) { x >>= 32; r += 32; }
|
986
1021
|
|
987
1022
|
return r + ecb_ld32 (x);
|
1023
|
+
#endif
|
988
1024
|
}
|
989
1025
|
#endif
|
990
1026
|
|
@@ -1097,8 +1133,8 @@ ecb_inline ecb_const uint64_t ecb_rotr64 (uint64_t x, unsigned int count) { retu
|
|
1097
1133
|
/* try to tell the compiler that some condition is definitely true */
|
1098
1134
|
#define ecb_assume(cond) if (!(cond)) ecb_unreachable (); else 0
|
1099
1135
|
|
1100
|
-
ecb_inline ecb_const
|
1101
|
-
ecb_inline ecb_const
|
1136
|
+
ecb_inline ecb_const uint32_t ecb_byteorder_helper (void);
|
1137
|
+
ecb_inline ecb_const uint32_t
|
1102
1138
|
ecb_byteorder_helper (void)
|
1103
1139
|
{
|
1104
1140
|
/* the union code still generates code under pressure in gcc, */
|
@@ -1107,26 +1143,28 @@ ecb_byteorder_helper (void)
|
|
1107
1143
|
/* the reason why we have this horrible preprocessor mess */
|
1108
1144
|
/* is to avoid it in all cases, at least on common architectures */
|
1109
1145
|
/* or when using a recent enough gcc version (>= 4.6) */
|
1110
|
-
#if (
|
1111
|
-
|
1112
|
-
#
|
1113
|
-
return
|
1114
|
-
#elif __BYTE_ORDER__ && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
1115
|
-
|
1146
|
+
#if (defined __BYTE_ORDER__ && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) \
|
1147
|
+
|| ((__i386 || __i386__ || _M_IX86 || ECB_GCC_AMD64 || ECB_MSVC_AMD64) && !__VOS__)
|
1148
|
+
#define ECB_LITTLE_ENDIAN 1
|
1149
|
+
return 0x44332211;
|
1150
|
+
#elif (defined __BYTE_ORDER__ && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) \
|
1151
|
+
|| ((__AARCH64EB__ || __MIPSEB__ || __ARMEB__) && !__VOS__)
|
1152
|
+
#define ECB_BIG_ENDIAN 1
|
1153
|
+
return 0x11223344;
|
1116
1154
|
#else
|
1117
1155
|
union
|
1118
1156
|
{
|
1119
|
-
|
1120
|
-
|
1121
|
-
} u = {
|
1122
|
-
return u.
|
1157
|
+
uint8_t c[4];
|
1158
|
+
uint32_t u;
|
1159
|
+
} u = { 0x11, 0x22, 0x33, 0x44 };
|
1160
|
+
return u.u;
|
1123
1161
|
#endif
|
1124
1162
|
}
|
1125
1163
|
|
1126
1164
|
ecb_inline ecb_const ecb_bool ecb_big_endian (void);
|
1127
|
-
ecb_inline ecb_const ecb_bool ecb_big_endian (void) { return ecb_byteorder_helper () ==
|
1165
|
+
ecb_inline ecb_const ecb_bool ecb_big_endian (void) { return ecb_byteorder_helper () == 0x11223344; }
|
1128
1166
|
ecb_inline ecb_const ecb_bool ecb_little_endian (void);
|
1129
|
-
ecb_inline ecb_const ecb_bool ecb_little_endian (void) { return ecb_byteorder_helper () ==
|
1167
|
+
ecb_inline ecb_const ecb_bool ecb_little_endian (void) { return ecb_byteorder_helper () == 0x44332211; }
|
1130
1168
|
|
1131
1169
|
#if ECB_GCC_VERSION(3,0) || ECB_C99
|
1132
1170
|
#define ecb_mod(m,n) ((m) % (n) + ((m) % (n) < 0 ? (n) : 0))
|
@@ -1161,6 +1199,102 @@ ecb_inline ecb_const ecb_bool ecb_little_endian (void) { return ecb_byteorder_he
|
|
1161
1199
|
#define ecb_array_length(name) (sizeof (name) / sizeof (name [0]))
|
1162
1200
|
#endif
|
1163
1201
|
|
1202
|
+
ecb_function_ ecb_const uint32_t ecb_binary16_to_binary32 (uint32_t x);
|
1203
|
+
ecb_function_ ecb_const uint32_t
|
1204
|
+
ecb_binary16_to_binary32 (uint32_t x)
|
1205
|
+
{
|
1206
|
+
unsigned int s = (x & 0x8000) << (31 - 15);
|
1207
|
+
int e = (x >> 10) & 0x001f;
|
1208
|
+
unsigned int m = x & 0x03ff;
|
1209
|
+
|
1210
|
+
if (ecb_expect_false (e == 31))
|
1211
|
+
/* infinity or NaN */
|
1212
|
+
e = 255 - (127 - 15);
|
1213
|
+
else if (ecb_expect_false (!e))
|
1214
|
+
{
|
1215
|
+
if (ecb_expect_true (!m))
|
1216
|
+
/* zero, handled by code below by forcing e to 0 */
|
1217
|
+
e = 0 - (127 - 15);
|
1218
|
+
else
|
1219
|
+
{
|
1220
|
+
/* subnormal, renormalise */
|
1221
|
+
unsigned int s = 10 - ecb_ld32 (m);
|
1222
|
+
|
1223
|
+
m = (m << s) & 0x3ff; /* mask implicit bit */
|
1224
|
+
e -= s - 1;
|
1225
|
+
}
|
1226
|
+
}
|
1227
|
+
|
1228
|
+
/* e and m now are normalised, or zero, (or inf or nan) */
|
1229
|
+
e += 127 - 15;
|
1230
|
+
|
1231
|
+
return s | (e << 23) | (m << (23 - 10));
|
1232
|
+
}
|
1233
|
+
|
1234
|
+
ecb_function_ ecb_const uint16_t ecb_binary32_to_binary16 (uint32_t x);
|
1235
|
+
ecb_function_ ecb_const uint16_t
|
1236
|
+
ecb_binary32_to_binary16 (uint32_t x)
|
1237
|
+
{
|
1238
|
+
unsigned int s = (x >> 16) & 0x00008000; /* sign bit, the easy part */
|
1239
|
+
unsigned int e = ((x >> 23) & 0x000000ff) - (127 - 15); /* the desired exponent */
|
1240
|
+
unsigned int m = x & 0x007fffff;
|
1241
|
+
|
1242
|
+
x &= 0x7fffffff;
|
1243
|
+
|
1244
|
+
/* if it's within range of binary16 normals, use fast path */
|
1245
|
+
if (ecb_expect_true (0x38800000 <= x && x <= 0x477fefff))
|
1246
|
+
{
|
1247
|
+
/* mantissa round-to-even */
|
1248
|
+
m += 0x00000fff + ((m >> (23 - 10)) & 1);
|
1249
|
+
|
1250
|
+
/* handle overflow */
|
1251
|
+
if (ecb_expect_false (m >= 0x00800000))
|
1252
|
+
{
|
1253
|
+
m >>= 1;
|
1254
|
+
e += 1;
|
1255
|
+
}
|
1256
|
+
|
1257
|
+
return s | (e << 10) | (m >> (23 - 10));
|
1258
|
+
}
|
1259
|
+
|
1260
|
+
/* handle large numbers and infinity */
|
1261
|
+
if (ecb_expect_true (0x477fefff < x && x <= 0x7f800000))
|
1262
|
+
return s | 0x7c00;
|
1263
|
+
|
1264
|
+
/* handle zero, subnormals and small numbers */
|
1265
|
+
if (ecb_expect_true (x < 0x38800000))
|
1266
|
+
{
|
1267
|
+
/* zero */
|
1268
|
+
if (ecb_expect_true (!x))
|
1269
|
+
return s;
|
1270
|
+
|
1271
|
+
/* handle subnormals */
|
1272
|
+
|
1273
|
+
/* too small, will be zero */
|
1274
|
+
if (e < (14 - 24)) /* might not be sharp, but is good enough */
|
1275
|
+
return s;
|
1276
|
+
|
1277
|
+
m |= 0x00800000; /* make implicit bit explicit */
|
1278
|
+
|
1279
|
+
/* very tricky - we need to round to the nearest e (+10) bit value */
|
1280
|
+
{
|
1281
|
+
unsigned int bits = 14 - e;
|
1282
|
+
unsigned int half = (1 << (bits - 1)) - 1;
|
1283
|
+
unsigned int even = (m >> bits) & 1;
|
1284
|
+
|
1285
|
+
/* if this overflows, we will end up with a normalised number */
|
1286
|
+
m = (m + half + even) >> bits;
|
1287
|
+
}
|
1288
|
+
|
1289
|
+
return s | m;
|
1290
|
+
}
|
1291
|
+
|
1292
|
+
/* handle NaNs, preserve leftmost nan bits, but make sure we don't turn them into infinities */
|
1293
|
+
m >>= 13;
|
1294
|
+
|
1295
|
+
return s | 0x7c00 | m | !m;
|
1296
|
+
}
|
1297
|
+
|
1164
1298
|
/*******************************************************************************/
|
1165
1299
|
/* floating point stuff, can be disabled by defining ECB_NO_LIBM */
|
1166
1300
|
|
@@ -1212,23 +1346,6 @@ ecb_inline ecb_const ecb_bool ecb_little_endian (void) { return ecb_byteorder_he
|
|
1212
1346
|
#define ecb_frexpf(x,e) (float) frexp ((double) (x), (e))
|
1213
1347
|
#endif
|
1214
1348
|
|
1215
|
-
/* converts an ieee half/binary16 to a float */
|
1216
|
-
ecb_function_ ecb_const float ecb_binary16_to_float (uint16_t x);
|
1217
|
-
ecb_function_ ecb_const float
|
1218
|
-
ecb_binary16_to_float (uint16_t x)
|
1219
|
-
{
|
1220
|
-
int e = (x >> 10) & 0x1f;
|
1221
|
-
int m = x & 0x3ff;
|
1222
|
-
float r;
|
1223
|
-
|
1224
|
-
if (!e ) r = ecb_ldexpf (m , -24);
|
1225
|
-
else if (e != 31) r = ecb_ldexpf (m + 0x400, e - 25);
|
1226
|
-
else if (m ) r = ECB_NAN;
|
1227
|
-
else r = ECB_INFINITY;
|
1228
|
-
|
1229
|
-
return x & 0x8000 ? -r : r;
|
1230
|
-
}
|
1231
|
-
|
1232
1349
|
/* convert a float to ieee single/binary32 */
|
1233
1350
|
ecb_function_ ecb_const uint32_t ecb_float_to_binary32 (float x);
|
1234
1351
|
ecb_function_ ecb_const uint32_t
|
@@ -1369,6 +1486,22 @@ ecb_inline ecb_const ecb_bool ecb_little_endian (void) { return ecb_byteorder_he
|
|
1369
1486
|
return r;
|
1370
1487
|
}
|
1371
1488
|
|
1489
|
+
/* convert a float to ieee half/binary16 */
|
1490
|
+
ecb_function_ ecb_const uint16_t ecb_float_to_binary16 (float x);
|
1491
|
+
ecb_function_ ecb_const uint16_t
|
1492
|
+
ecb_float_to_binary16 (float x)
|
1493
|
+
{
|
1494
|
+
return ecb_binary32_to_binary16 (ecb_float_to_binary32 (x));
|
1495
|
+
}
|
1496
|
+
|
1497
|
+
/* convert an ieee half/binary16 to float */
|
1498
|
+
ecb_function_ ecb_const float ecb_binary16_to_float (uint16_t x);
|
1499
|
+
ecb_function_ ecb_const float
|
1500
|
+
ecb_binary16_to_float (uint16_t x)
|
1501
|
+
{
|
1502
|
+
return ecb_binary32_to_float (ecb_binary16_to_binary32 (x));
|
1503
|
+
}
|
1504
|
+
|
1372
1505
|
#endif
|
1373
1506
|
|
1374
1507
|
#endif
|
@@ -1401,7 +1534,7 @@ ecb_inline ecb_const ecb_bool ecb_little_endian (void) { return ecb_byteorder_he
|
|
1401
1534
|
#if EV_FEATURE_CODE
|
1402
1535
|
# define inline_speed ecb_inline
|
1403
1536
|
#else
|
1404
|
-
# define inline_speed static
|
1537
|
+
# define inline_speed noinline static
|
1405
1538
|
#endif
|
1406
1539
|
|
1407
1540
|
#define NUMPRI (EV_MAXPRI - EV_MINPRI + 1)
|
@@ -1458,7 +1591,8 @@ static EV_ATOMIC_T have_monotonic; /* did clock_gettime (CLOCK_MONOTONIC) work?
|
|
1458
1591
|
#include <float.h>
|
1459
1592
|
|
1460
1593
|
/* a floor() replacement function, should be independent of ev_tstamp type */
|
1461
|
-
|
1594
|
+
noinline
|
1595
|
+
static ev_tstamp
|
1462
1596
|
ev_floor (ev_tstamp v)
|
1463
1597
|
{
|
1464
1598
|
/* the choice of shift factor is not terribly important */
|
@@ -1500,7 +1634,8 @@ ev_floor (ev_tstamp v)
|
|
1500
1634
|
# include <sys/utsname.h>
|
1501
1635
|
#endif
|
1502
1636
|
|
1503
|
-
|
1637
|
+
noinline ecb_cold
|
1638
|
+
static unsigned int
|
1504
1639
|
ev_linux_version (void)
|
1505
1640
|
{
|
1506
1641
|
#ifdef __linux
|
@@ -1539,7 +1674,8 @@ ev_linux_version (void)
|
|
1539
1674
|
/*****************************************************************************/
|
1540
1675
|
|
1541
1676
|
#if EV_AVOID_STDIO
|
1542
|
-
|
1677
|
+
noinline ecb_cold
|
1678
|
+
static void
|
1543
1679
|
ev_printerr (const char *msg)
|
1544
1680
|
{
|
1545
1681
|
write (STDERR_FILENO, msg, strlen (msg));
|
@@ -1548,13 +1684,15 @@ ev_printerr (const char *msg)
|
|
1548
1684
|
|
1549
1685
|
static void (*syserr_cb)(const char *msg) EV_THROW;
|
1550
1686
|
|
1551
|
-
|
1687
|
+
ecb_cold
|
1688
|
+
void
|
1552
1689
|
ev_set_syserr_cb (void (*cb)(const char *msg) EV_THROW) EV_THROW
|
1553
1690
|
{
|
1554
1691
|
syserr_cb = cb;
|
1555
1692
|
}
|
1556
1693
|
|
1557
|
-
|
1694
|
+
noinline ecb_cold
|
1695
|
+
static void
|
1558
1696
|
ev_syserr (const char *msg)
|
1559
1697
|
{
|
1560
1698
|
if (!msg)
|
@@ -1595,7 +1733,8 @@ ev_realloc_emul (void *ptr, long size) EV_THROW
|
|
1595
1733
|
|
1596
1734
|
static void *(*alloc)(void *ptr, long size) EV_THROW = ev_realloc_emul;
|
1597
1735
|
|
1598
|
-
|
1736
|
+
ecb_cold
|
1737
|
+
void
|
1599
1738
|
ev_set_allocator (void *(*cb)(void *ptr, long size) EV_THROW) EV_THROW
|
1600
1739
|
{
|
1601
1740
|
alloc = cb;
|
@@ -1814,7 +1953,8 @@ array_nextsize (int elem, int cur, int cnt)
|
|
1814
1953
|
return ncur;
|
1815
1954
|
}
|
1816
1955
|
|
1817
|
-
|
1956
|
+
noinline ecb_cold
|
1957
|
+
static void *
|
1818
1958
|
array_realloc (int elem, void *base, int *cur, int cnt)
|
1819
1959
|
{
|
1820
1960
|
*cur = array_nextsize (elem, *cur, cnt);
|
@@ -1827,7 +1967,7 @@ array_realloc (int elem, void *base, int *cur, int cnt)
|
|
1827
1967
|
#define array_needsize(type,base,cur,cnt,init) \
|
1828
1968
|
if (expect_false ((cnt) > (cur))) \
|
1829
1969
|
{ \
|
1830
|
-
int
|
1970
|
+
ecb_unused int ocur_ = (cur); \
|
1831
1971
|
(base) = (type *)array_realloc \
|
1832
1972
|
(sizeof (type), (base), &(cur), (cnt)); \
|
1833
1973
|
init ((base) + (ocur_), (cur) - ocur_); \
|
@@ -1849,12 +1989,14 @@ array_realloc (int elem, void *base, int *cur, int cnt)
|
|
1849
1989
|
/*****************************************************************************/
|
1850
1990
|
|
1851
1991
|
/* dummy callback for pending events */
|
1852
|
-
|
1992
|
+
noinline
|
1993
|
+
static void
|
1853
1994
|
pendingcb (EV_P_ ev_prepare *w, int revents)
|
1854
1995
|
{
|
1855
1996
|
}
|
1856
1997
|
|
1857
|
-
|
1998
|
+
noinline
|
1999
|
+
void
|
1858
2000
|
ev_feed_event (EV_P_ void *w, int revents) EV_THROW
|
1859
2001
|
{
|
1860
2002
|
W w_ = (W)w;
|
@@ -1994,7 +2136,8 @@ fd_reify (EV_P)
|
|
1994
2136
|
}
|
1995
2137
|
|
1996
2138
|
/* something about the given fd changed */
|
1997
|
-
inline_size
|
2139
|
+
inline_size
|
2140
|
+
void
|
1998
2141
|
fd_change (EV_P_ int fd, int flags)
|
1999
2142
|
{
|
2000
2143
|
unsigned char reify = anfds [fd].reify;
|
@@ -2009,7 +2152,7 @@ fd_change (EV_P_ int fd, int flags)
|
|
2009
2152
|
}
|
2010
2153
|
|
2011
2154
|
/* the given fd is invalid/unusable, so make sure it doesn't hurt us anymore */
|
2012
|
-
inline_speed void
|
2155
|
+
inline_speed ecb_cold void
|
2013
2156
|
fd_kill (EV_P_ int fd)
|
2014
2157
|
{
|
2015
2158
|
ev_io *w;
|
@@ -2022,7 +2165,7 @@ fd_kill (EV_P_ int fd)
|
|
2022
2165
|
}
|
2023
2166
|
|
2024
2167
|
/* check whether the given fd is actually valid, for error recovery */
|
2025
|
-
inline_size int
|
2168
|
+
inline_size ecb_cold int
|
2026
2169
|
fd_valid (int fd)
|
2027
2170
|
{
|
2028
2171
|
#ifdef _WIN32
|
@@ -2033,7 +2176,8 @@ fd_valid (int fd)
|
|
2033
2176
|
}
|
2034
2177
|
|
2035
2178
|
/* called on EBADF to verify fds */
|
2036
|
-
|
2179
|
+
noinline ecb_cold
|
2180
|
+
static void
|
2037
2181
|
fd_ebadf (EV_P)
|
2038
2182
|
{
|
2039
2183
|
int fd;
|
@@ -2045,7 +2189,8 @@ fd_ebadf (EV_P)
|
|
2045
2189
|
}
|
2046
2190
|
|
2047
2191
|
/* called on ENOMEM in select/poll to kill some fds and retry */
|
2048
|
-
|
2192
|
+
noinline ecb_cold
|
2193
|
+
static void
|
2049
2194
|
fd_enomem (EV_P)
|
2050
2195
|
{
|
2051
2196
|
int fd;
|
@@ -2059,7 +2204,8 @@ fd_enomem (EV_P)
|
|
2059
2204
|
}
|
2060
2205
|
|
2061
2206
|
/* usually called after fork if backend needs to re-arm all fds from scratch */
|
2062
|
-
|
2207
|
+
noinline
|
2208
|
+
static void
|
2063
2209
|
fd_rearm_all (EV_P)
|
2064
2210
|
{
|
2065
2211
|
int fd;
|
@@ -2250,7 +2396,8 @@ static ANSIG signals [EV_NSIG - 1];
|
|
2250
2396
|
|
2251
2397
|
#if EV_SIGNAL_ENABLE || EV_ASYNC_ENABLE
|
2252
2398
|
|
2253
|
-
|
2399
|
+
noinline ecb_cold
|
2400
|
+
static void
|
2254
2401
|
evpipe_init (EV_P)
|
2255
2402
|
{
|
2256
2403
|
if (!ev_is_active (&pipe_w))
|
@@ -2438,7 +2585,8 @@ ev_sighandler (int signum)
|
|
2438
2585
|
ev_feed_signal (signum);
|
2439
2586
|
}
|
2440
2587
|
|
2441
|
-
|
2588
|
+
noinline
|
2589
|
+
void
|
2442
2590
|
ev_feed_signal_event (EV_P_ int signum) EV_THROW
|
2443
2591
|
{
|
2444
2592
|
WL w;
|
@@ -2565,20 +2713,20 @@ childcb (EV_P_ ev_signal *sw, int revents)
|
|
2565
2713
|
# include "ev_select.c"
|
2566
2714
|
#endif
|
2567
2715
|
|
2568
|
-
int
|
2716
|
+
ecb_cold int
|
2569
2717
|
ev_version_major (void) EV_THROW
|
2570
2718
|
{
|
2571
2719
|
return EV_VERSION_MAJOR;
|
2572
2720
|
}
|
2573
2721
|
|
2574
|
-
int
|
2722
|
+
ecb_cold int
|
2575
2723
|
ev_version_minor (void) EV_THROW
|
2576
2724
|
{
|
2577
2725
|
return EV_VERSION_MINOR;
|
2578
2726
|
}
|
2579
2727
|
|
2580
2728
|
/* return true if we are running with elevated privileges and should ignore env variables */
|
2581
|
-
|
2729
|
+
inline_size ecb_cold int
|
2582
2730
|
enable_secure (void)
|
2583
2731
|
{
|
2584
2732
|
#ifdef _WIN32
|
@@ -2589,7 +2737,8 @@ enable_secure (void)
|
|
2589
2737
|
#endif
|
2590
2738
|
}
|
2591
2739
|
|
2592
|
-
|
2740
|
+
ecb_cold
|
2741
|
+
unsigned int
|
2593
2742
|
ev_supported_backends (void) EV_THROW
|
2594
2743
|
{
|
2595
2744
|
unsigned int flags = 0;
|
@@ -2603,7 +2752,8 @@ ev_supported_backends (void) EV_THROW
|
|
2603
2752
|
return flags;
|
2604
2753
|
}
|
2605
2754
|
|
2606
|
-
|
2755
|
+
ecb_cold
|
2756
|
+
unsigned int
|
2607
2757
|
ev_recommended_backends (void) EV_THROW
|
2608
2758
|
{
|
2609
2759
|
unsigned int flags = ev_supported_backends ();
|
@@ -2625,7 +2775,8 @@ ev_recommended_backends (void) EV_THROW
|
|
2625
2775
|
return flags;
|
2626
2776
|
}
|
2627
2777
|
|
2628
|
-
|
2778
|
+
ecb_cold
|
2779
|
+
unsigned int
|
2629
2780
|
ev_embeddable_backends (void) EV_THROW
|
2630
2781
|
{
|
2631
2782
|
int flags = EVBACKEND_EPOLL | EVBACKEND_KQUEUE | EVBACKEND_PORT;
|
@@ -2695,7 +2846,8 @@ ev_set_loop_release_cb (EV_P_ void (*release)(EV_P) EV_THROW, void (*acquire)(EV
|
|
2695
2846
|
#endif
|
2696
2847
|
|
2697
2848
|
/* initialise a loop structure, must be zero-initialised */
|
2698
|
-
|
2849
|
+
noinline ecb_cold
|
2850
|
+
static void
|
2699
2851
|
loop_init (EV_P_ unsigned int flags) EV_THROW
|
2700
2852
|
{
|
2701
2853
|
if (!backend)
|
@@ -2792,7 +2944,8 @@ loop_init (EV_P_ unsigned int flags) EV_THROW
|
|
2792
2944
|
}
|
2793
2945
|
|
2794
2946
|
/* free up a loop structure */
|
2795
|
-
|
2947
|
+
ecb_cold
|
2948
|
+
void
|
2796
2949
|
ev_loop_destroy (EV_P)
|
2797
2950
|
{
|
2798
2951
|
int i;
|
@@ -2923,7 +3076,7 @@ loop_fork (EV_P)
|
|
2923
3076
|
#endif
|
2924
3077
|
|
2925
3078
|
#if EV_SIGNAL_ENABLE || EV_ASYNC_ENABLE
|
2926
|
-
if (ev_is_active (&pipe_w))
|
3079
|
+
if (ev_is_active (&pipe_w) && postfork != 2)
|
2927
3080
|
{
|
2928
3081
|
/* pipe_write_wanted must be false now, so modifying fd vars should be safe */
|
2929
3082
|
|
@@ -2944,7 +3097,8 @@ loop_fork (EV_P)
|
|
2944
3097
|
|
2945
3098
|
#if EV_MULTIPLICITY
|
2946
3099
|
|
2947
|
-
|
3100
|
+
ecb_cold
|
3101
|
+
struct ev_loop *
|
2948
3102
|
ev_loop_new (unsigned int flags) EV_THROW
|
2949
3103
|
{
|
2950
3104
|
EV_P = (struct ev_loop *)ev_malloc (sizeof (struct ev_loop));
|
@@ -2962,7 +3116,8 @@ ev_loop_new (unsigned int flags) EV_THROW
|
|
2962
3116
|
#endif /* multiplicity */
|
2963
3117
|
|
2964
3118
|
#if EV_VERIFY
|
2965
|
-
|
3119
|
+
noinline ecb_cold
|
3120
|
+
static void
|
2966
3121
|
verify_watcher (EV_P_ W w)
|
2967
3122
|
{
|
2968
3123
|
assert (("libev: watcher has invalid priority", ABSPRI (w) >= 0 && ABSPRI (w) < NUMPRI));
|
@@ -2971,7 +3126,8 @@ verify_watcher (EV_P_ W w)
|
|
2971
3126
|
assert (("libev: pending watcher not on pending queue", pendings [ABSPRI (w)][w->pending - 1].w == w));
|
2972
3127
|
}
|
2973
3128
|
|
2974
|
-
|
3129
|
+
noinline ecb_cold
|
3130
|
+
static void
|
2975
3131
|
verify_heap (EV_P_ ANHE *heap, int N)
|
2976
3132
|
{
|
2977
3133
|
int i;
|
@@ -2986,7 +3142,8 @@ verify_heap (EV_P_ ANHE *heap, int N)
|
|
2986
3142
|
}
|
2987
3143
|
}
|
2988
3144
|
|
2989
|
-
|
3145
|
+
noinline ecb_cold
|
3146
|
+
static void
|
2990
3147
|
array_verify (EV_P_ W *ws, int cnt)
|
2991
3148
|
{
|
2992
3149
|
while (cnt--)
|
@@ -3085,7 +3242,8 @@ ev_verify (EV_P) EV_THROW
|
|
3085
3242
|
#endif
|
3086
3243
|
|
3087
3244
|
#if EV_MULTIPLICITY
|
3088
|
-
|
3245
|
+
ecb_cold
|
3246
|
+
struct ev_loop *
|
3089
3247
|
#else
|
3090
3248
|
int
|
3091
3249
|
#endif
|
@@ -3143,7 +3301,8 @@ ev_pending_count (EV_P) EV_THROW
|
|
3143
3301
|
return count;
|
3144
3302
|
}
|
3145
3303
|
|
3146
|
-
|
3304
|
+
noinline
|
3305
|
+
void
|
3147
3306
|
ev_invoke_pending (EV_P)
|
3148
3307
|
{
|
3149
3308
|
pendingpri = NUMPRI;
|
@@ -3228,7 +3387,8 @@ timers_reify (EV_P)
|
|
3228
3387
|
|
3229
3388
|
#if EV_PERIODIC_ENABLE
|
3230
3389
|
|
3231
|
-
|
3390
|
+
noinline
|
3391
|
+
static void
|
3232
3392
|
periodic_recalc (EV_P_ ev_periodic *w)
|
3233
3393
|
{
|
3234
3394
|
ev_tstamp interval = w->interval > MIN_INTERVAL ? w->interval : MIN_INTERVAL;
|
@@ -3296,7 +3456,8 @@ periodics_reify (EV_P)
|
|
3296
3456
|
|
3297
3457
|
/* simply recalculate all periodics */
|
3298
3458
|
/* TODO: maybe ensure that at least one event happens when jumping forward? */
|
3299
|
-
|
3459
|
+
noinline ecb_cold
|
3460
|
+
static void
|
3300
3461
|
periodics_reschedule (EV_P)
|
3301
3462
|
{
|
3302
3463
|
int i;
|
@@ -3319,7 +3480,8 @@ periodics_reschedule (EV_P)
|
|
3319
3480
|
#endif
|
3320
3481
|
|
3321
3482
|
/* adjust all timers by a given offset */
|
3322
|
-
|
3483
|
+
noinline ecb_cold
|
3484
|
+
static void
|
3323
3485
|
timers_reschedule (EV_P_ ev_tstamp adjust)
|
3324
3486
|
{
|
3325
3487
|
int i;
|
@@ -3784,7 +3946,8 @@ ev_stop (EV_P_ W w)
|
|
3784
3946
|
|
3785
3947
|
/*****************************************************************************/
|
3786
3948
|
|
3787
|
-
|
3949
|
+
noinline
|
3950
|
+
void
|
3788
3951
|
ev_io_start (EV_P_ ev_io *w) EV_THROW
|
3789
3952
|
{
|
3790
3953
|
int fd = w->fd;
|
@@ -3810,7 +3973,8 @@ ev_io_start (EV_P_ ev_io *w) EV_THROW
|
|
3810
3973
|
EV_FREQUENT_CHECK;
|
3811
3974
|
}
|
3812
3975
|
|
3813
|
-
|
3976
|
+
noinline
|
3977
|
+
void
|
3814
3978
|
ev_io_stop (EV_P_ ev_io *w) EV_THROW
|
3815
3979
|
{
|
3816
3980
|
clear_pending (EV_A_ (W)w);
|
@@ -3829,7 +3993,8 @@ ev_io_stop (EV_P_ ev_io *w) EV_THROW
|
|
3829
3993
|
EV_FREQUENT_CHECK;
|
3830
3994
|
}
|
3831
3995
|
|
3832
|
-
|
3996
|
+
noinline
|
3997
|
+
void
|
3833
3998
|
ev_timer_start (EV_P_ ev_timer *w) EV_THROW
|
3834
3999
|
{
|
3835
4000
|
if (expect_false (ev_is_active (w)))
|
@@ -3853,7 +4018,8 @@ ev_timer_start (EV_P_ ev_timer *w) EV_THROW
|
|
3853
4018
|
/*assert (("libev: internal timer heap corruption", timers [ev_active (w)] == (WT)w));*/
|
3854
4019
|
}
|
3855
4020
|
|
3856
|
-
|
4021
|
+
noinline
|
4022
|
+
void
|
3857
4023
|
ev_timer_stop (EV_P_ ev_timer *w) EV_THROW
|
3858
4024
|
{
|
3859
4025
|
clear_pending (EV_A_ (W)w);
|
@@ -3883,7 +4049,8 @@ ev_timer_stop (EV_P_ ev_timer *w) EV_THROW
|
|
3883
4049
|
EV_FREQUENT_CHECK;
|
3884
4050
|
}
|
3885
4051
|
|
3886
|
-
|
4052
|
+
noinline
|
4053
|
+
void
|
3887
4054
|
ev_timer_again (EV_P_ ev_timer *w) EV_THROW
|
3888
4055
|
{
|
3889
4056
|
EV_FREQUENT_CHECK;
|
@@ -3917,7 +4084,8 @@ ev_timer_remaining (EV_P_ ev_timer *w) EV_THROW
|
|
3917
4084
|
}
|
3918
4085
|
|
3919
4086
|
#if EV_PERIODIC_ENABLE
|
3920
|
-
|
4087
|
+
noinline
|
4088
|
+
void
|
3921
4089
|
ev_periodic_start (EV_P_ ev_periodic *w) EV_THROW
|
3922
4090
|
{
|
3923
4091
|
if (expect_false (ev_is_active (w)))
|
@@ -3947,7 +4115,8 @@ ev_periodic_start (EV_P_ ev_periodic *w) EV_THROW
|
|
3947
4115
|
/*assert (("libev: internal periodic heap corruption", ANHE_w (periodics [ev_active (w)]) == (WT)w));*/
|
3948
4116
|
}
|
3949
4117
|
|
3950
|
-
|
4118
|
+
noinline
|
4119
|
+
void
|
3951
4120
|
ev_periodic_stop (EV_P_ ev_periodic *w) EV_THROW
|
3952
4121
|
{
|
3953
4122
|
clear_pending (EV_A_ (W)w);
|
@@ -3975,7 +4144,8 @@ ev_periodic_stop (EV_P_ ev_periodic *w) EV_THROW
|
|
3975
4144
|
EV_FREQUENT_CHECK;
|
3976
4145
|
}
|
3977
4146
|
|
3978
|
-
|
4147
|
+
noinline
|
4148
|
+
void
|
3979
4149
|
ev_periodic_again (EV_P_ ev_periodic *w) EV_THROW
|
3980
4150
|
{
|
3981
4151
|
/* TODO: use adjustheap and recalculation */
|
@@ -3990,7 +4160,8 @@ ev_periodic_again (EV_P_ ev_periodic *w) EV_THROW
|
|
3990
4160
|
|
3991
4161
|
#if EV_SIGNAL_ENABLE
|
3992
4162
|
|
3993
|
-
|
4163
|
+
noinline
|
4164
|
+
void
|
3994
4165
|
ev_signal_start (EV_P_ ev_signal *w) EV_THROW
|
3995
4166
|
{
|
3996
4167
|
if (expect_false (ev_is_active (w)))
|
@@ -4072,7 +4243,8 @@ ev_signal_start (EV_P_ ev_signal *w) EV_THROW
|
|
4072
4243
|
EV_FREQUENT_CHECK;
|
4073
4244
|
}
|
4074
4245
|
|
4075
|
-
|
4246
|
+
noinline
|
4247
|
+
void
|
4076
4248
|
ev_signal_stop (EV_P_ ev_signal *w) EV_THROW
|
4077
4249
|
{
|
4078
4250
|
clear_pending (EV_A_ (W)w);
|
@@ -4158,14 +4330,15 @@ ev_child_stop (EV_P_ ev_child *w) EV_THROW
|
|
4158
4330
|
#define NFS_STAT_INTERVAL 30.1074891 /* for filesystems potentially failing inotify */
|
4159
4331
|
#define MIN_STAT_INTERVAL 0.1074891
|
4160
4332
|
|
4161
|
-
static void
|
4333
|
+
noinline static void stat_timer_cb (EV_P_ ev_timer *w_, int revents);
|
4162
4334
|
|
4163
4335
|
#if EV_USE_INOTIFY
|
4164
4336
|
|
4165
4337
|
/* the * 2 is to allow for alignment padding, which for some reason is >> 8 */
|
4166
4338
|
# define EV_INOTIFY_BUFSIZE (sizeof (struct inotify_event) * 2 + NAME_MAX)
|
4167
4339
|
|
4168
|
-
|
4340
|
+
noinline
|
4341
|
+
static void
|
4169
4342
|
infy_add (EV_P_ ev_stat *w)
|
4170
4343
|
{
|
4171
4344
|
w->wd = inotify_add_watch (fs_fd, w->path,
|
@@ -4239,7 +4412,8 @@ infy_add (EV_P_ ev_stat *w)
|
|
4239
4412
|
if (ev_is_active (&w->timer)) ev_unref (EV_A);
|
4240
4413
|
}
|
4241
4414
|
|
4242
|
-
|
4415
|
+
noinline
|
4416
|
+
static void
|
4243
4417
|
infy_del (EV_P_ ev_stat *w)
|
4244
4418
|
{
|
4245
4419
|
int slot;
|
@@ -4256,7 +4430,8 @@ infy_del (EV_P_ ev_stat *w)
|
|
4256
4430
|
inotify_rm_watch (fs_fd, wd);
|
4257
4431
|
}
|
4258
4432
|
|
4259
|
-
|
4433
|
+
noinline
|
4434
|
+
static void
|
4260
4435
|
infy_wd (EV_P_ int slot, int wd, struct inotify_event *ev)
|
4261
4436
|
{
|
4262
4437
|
if (slot < 0)
|
@@ -4302,7 +4477,8 @@ infy_cb (EV_P_ ev_io *w, int revents)
|
|
4302
4477
|
}
|
4303
4478
|
}
|
4304
4479
|
|
4305
|
-
inline_size
|
4480
|
+
inline_size ecb_cold
|
4481
|
+
void
|
4306
4482
|
ev_check_2625 (EV_P)
|
4307
4483
|
{
|
4308
4484
|
/* kernels < 2.6.25 are borked
|
@@ -4410,7 +4586,8 @@ ev_stat_stat (EV_P_ ev_stat *w) EV_THROW
|
|
4410
4586
|
w->attr.st_nlink = 1;
|
4411
4587
|
}
|
4412
4588
|
|
4413
|
-
|
4589
|
+
noinline
|
4590
|
+
static void
|
4414
4591
|
stat_timer_cb (EV_P_ ev_timer *w_, int revents)
|
4415
4592
|
{
|
4416
4593
|
ev_stat *w = (ev_stat *)(((char *)w_) - offsetof (ev_stat, timer));
|
@@ -4630,7 +4807,8 @@ ev_check_stop (EV_P_ ev_check *w) EV_THROW
|
|
4630
4807
|
#endif
|
4631
4808
|
|
4632
4809
|
#if EV_EMBED_ENABLE
|
4633
|
-
|
4810
|
+
noinline
|
4811
|
+
void
|
4634
4812
|
ev_embed_sweep (EV_P_ ev_embed *w) EV_THROW
|
4635
4813
|
{
|
4636
4814
|
ev_run (w->other, EVRUN_NOWAIT);
|
@@ -4937,7 +5115,8 @@ ev_once (EV_P_ int fd, int events, ev_tstamp timeout, void (*cb)(int revents, vo
|
|
4937
5115
|
/*****************************************************************************/
|
4938
5116
|
|
4939
5117
|
#if EV_WALK_ENABLE
|
4940
|
-
|
5118
|
+
ecb_cold
|
5119
|
+
void
|
4941
5120
|
ev_walk (EV_P_ int types, void (*cb)(EV_P_ int type, void *w)) EV_THROW
|
4942
5121
|
{
|
4943
5122
|
int i, j;
|
@@ -5053,3 +5232,4 @@ ev_walk (EV_P_ int types, void (*cb)(EV_P_ int type, void *w)) EV_THROW
|
|
5053
5232
|
#if EV_MULTIPLICITY
|
5054
5233
|
#include "ev_wrap.h"
|
5055
5234
|
#endif
|
5235
|
+
|