… | |
… | |
80 | # define SvVAL64 SvIV |
80 | # define SvVAL64 SvIV |
81 | #else |
81 | #else |
82 | # define SvVAL64 SvNV |
82 | # define SvVAL64 SvNV |
83 | #endif |
83 | #endif |
84 | |
84 | |
|
|
85 | /*****************************************************************************/ |
|
|
86 | |
|
|
87 | #if __GNUC__ >= 3 |
|
|
88 | # define expect(expr,value) __builtin_expect ((expr),(value)) |
|
|
89 | #else |
|
|
90 | # define expect(expr,value) (expr) |
|
|
91 | #endif |
|
|
92 | |
|
|
93 | #define expect_false(expr) expect ((expr) != 0, 0) |
|
|
94 | #define expect_true(expr) expect ((expr) != 0, 1) |
|
|
95 | |
|
|
96 | /*****************************************************************************/ |
|
|
97 | |
85 | static HV *stash; |
98 | static HV *stash; |
86 | typedef SV SV8; /* byte-sv, used for argument-checking */ |
99 | typedef SV SV8; /* byte-sv, used for argument-checking */ |
87 | |
100 | |
88 | #define AIO_REQ_KLASS "IO::AIO::REQ" |
101 | #define AIO_REQ_KLASS "IO::AIO::REQ" |
89 | #define AIO_GRP_KLASS "IO::AIO::GRP" |
102 | #define AIO_GRP_KLASS "IO::AIO::GRP" |
… | |
… | |
181 | |
194 | |
182 | static void req_submit (eio_req *req) |
195 | static void req_submit (eio_req *req) |
183 | { |
196 | { |
184 | eio_submit (req); |
197 | eio_submit (req); |
185 | |
198 | |
186 | if (on_next_submit) |
199 | if (expect_false (on_next_submit)) |
187 | { |
200 | { |
188 | dSP; |
201 | dSP; |
189 | SV *cb = sv_2mortal (on_next_submit); |
202 | SV *cb = sv_2mortal (on_next_submit); |
190 | |
203 | |
191 | on_next_submit = 0; |
204 | on_next_submit = 0; |
… | |
… | |
896 | { |
909 | { |
897 | dREQ; |
910 | dREQ; |
898 | |
911 | |
899 | req->type = EIO_GROUP; |
912 | req->type = EIO_GROUP; |
900 | |
913 | |
901 | eio_submit (req); |
914 | req_submit (req); |
902 | XPUSHs (req_sv (req, AIO_GRP_KLASS)); |
915 | XPUSHs (req_sv (req, AIO_GRP_KLASS)); |
903 | } |
916 | } |
904 | |
917 | |
905 | void |
918 | void |
906 | aio_nop (SV *callback=&PL_sv_undef) |
919 | aio_nop (SV *callback=&PL_sv_undef) |