|
|
1 | #define PERL_NO_GET_CONTEXT |
|
|
2 | |
1 | #include "EXTERN.h" |
3 | #include "EXTERN.h" |
2 | #include "perl.h" |
4 | #include "perl.h" |
3 | #include "XSUB.h" |
5 | #include "XSUB.h" |
4 | |
6 | |
5 | #include <sys/types.h> |
7 | #include <sys/types.h> |
… | |
… | |
84 | nreqs++; |
86 | nreqs++; |
85 | write (reqpipe[1], &req, sizeof (aio_req)); |
87 | write (reqpipe[1], &req, sizeof (aio_req)); |
86 | } |
88 | } |
87 | |
89 | |
88 | static void |
90 | static void |
|
|
91 | read_write (pTHX_ |
89 | read_write (pTHX_ int dowrite, int fd, off_t offset, size_t length, |
92 | int dowrite, int fd, off_t offset, size_t length, |
90 | SV *data, STRLEN dataoffset, SV*callback) |
93 | SV *data, STRLEN dataoffset, SV*callback) |
91 | { |
94 | { |
92 | aio_req req; |
95 | aio_req req; |
93 | STRLEN svlen; |
96 | STRLEN svlen; |
94 | char *svptr = SvPV (data, svlen); |
97 | char *svptr = SvPV (data, svlen); |
… | |
… | |
304 | fd_set rfd; |
307 | fd_set rfd; |
305 | FD_ZERO(&rfd); |
308 | FD_ZERO(&rfd); |
306 | FD_SET(respipe[0], &rfd); |
309 | FD_SET(respipe[0], &rfd); |
307 | |
310 | |
308 | select (respipe[0] + 1, &rfd, 0, 0, 0); |
311 | select (respipe[0] + 1, &rfd, 0, 0, 0); |
309 | poll_cb (); |
312 | poll_cb (aTHX); |
310 | } |
313 | } |
311 | |
314 | |
312 | void |
315 | void |
313 | aio_open(pathname,flags,mode,callback) |
316 | aio_open(pathname,flags,mode,callback) |
314 | SV * pathname |
317 | SV * pathname |