ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Linux-AIO/AIO.xs
(Generate patch)

Comparing Linux-AIO/AIO.xs (file contents):
Revision 1.5 by root, Tue Aug 14 18:06:37 2001 UTC vs.
Revision 1.6 by root, Tue Aug 14 23:25:39 2001 UTC

5#include <sys/types.h> 5#include <sys/types.h>
6#include <unistd.h> 6#include <unistd.h>
7#include <fcntl.h> 7#include <fcntl.h>
8#include <sched.h> 8#include <sched.h>
9 9
10#define STACKSIZE 1024 /* yeah */ 10#define STACKSIZE 2048 /* yeah */
11 11
12#define REQ_QUIT 0 12#define REQ_QUIT 0
13#define REQ_READ 1 13#define REQ_READ 1
14#define REQ_WRITE 2 14#define REQ_WRITE 2
15 15
103 req->type = dowrite ? REQ_WRITE : REQ_READ; 103 req->type = dowrite ? REQ_WRITE : REQ_READ;
104 req->fd = fd; 104 req->fd = fd;
105 req->offset = offset; 105 req->offset = offset;
106 req->length = length; 106 req->length = length;
107 req->data = SvREFCNT_inc (data); 107 req->data = SvREFCNT_inc (data);
108 req->dataptr = svptr + dataoffset; 108 req->dataptr = (char *)svptr + dataoffset;
109 req->callback = SvREFCNT_inc (callback); 109 req->callback = SvREFCNT_inc (callback);
110 110
111 nreqs++; 111 nreqs++;
112 write (reqpipe[1], &req, sizeof (aio_req)); 112 write (reqpipe[1], &req, sizeof (aio_req));
113} 113}
130 { 130 {
131 int errorno = errno; 131 int errorno = errno;
132 errno = req->errorno; 132 errno = req->errorno;
133 133
134 if (req->type == REQ_READ) 134 if (req->type == REQ_READ)
135 SvCUR_set (req->data, req->result > 0 135 SvCUR_set (req->data, req->dataoffset
136 ? req->dataoffset + req->result 136 + req->result > 0 ? req->result : 0);
137 : req->dataoffset);
138 137
139 PUSHMARK (SP); 138 PUSHMARK (SP);
140 XPUSHs (sv_2mortal (newSViv (req->result))); 139 XPUSHs (sv_2mortal (newSViv (req->result)));
141 PUTBACK; 140 PUTBACK;
142 call_sv (req->callback, G_VOID); 141 call_sv (req->callback, G_VOID);
248 } 247 }
249 248
250void 249void
251aio_read(fh,offset,length,data,dataoffset,callback) 250aio_read(fh,offset,length,data,dataoffset,callback)
252 PerlIO * fh 251 PerlIO * fh
253 unsigned long offset 252 UV offset
254 long length 253 STRLEN length
255 SV * data 254 SV * data
256 STRLEN dataoffset 255 STRLEN dataoffset
257 SV * callback 256 SV * callback
258 PROTOTYPE: $$$$$$ 257 PROTOTYPE: $$$$$$
259 ALIAS: 258 ALIAS:
260 aio_write = 1 259 aio_write = 1
261 CODE: 260 CODE:
262 sv_upgrade (data, SVt_PV); 261 SvUPGRADE (data, SVt_PV);
262 SvPOK_on (data);
263 read_write (aTHX_ ix, PerlIO_fileno (fh), offset, length, data, dataoffset, callback); 263 read_write (aTHX_ ix, PerlIO_fileno (fh), offset, length, data, dataoffset, callback);
264 264
265int 265int
266poll_fileno() 266poll_fileno()
267 PROTOTYPE: 267 PROTOTYPE:
269 RETVAL = respipe[0]; 269 RETVAL = respipe[0];
270 OUTPUT: 270 OUTPUT:
271 RETVAL 271 RETVAL
272 272
273int 273int
274poll_cb() 274poll_cb(...)
275 PROTOTYPE: 275 PROTOTYPE:
276 CODE: 276 CODE:
277 RETVAL = poll_cb (aTHX); 277 RETVAL = poll_cb (aTHX);
278 OUTPUT: 278 OUTPUT:
279 RETVAL 279 RETVAL

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines