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

Comparing IO-AIO/AIO.xs (file contents):
Revision 1.15 by root, Sat Jul 23 18:19:56 2005 UTC vs.
Revision 1.16 by root, Sun Jul 31 18:20:07 2005 UTC

1#include "EXTERN.h" 1#include "EXTERN.h"
2#include "perl.h" 2#include "perl.h"
3#include "XSUB.h" 3#include "XSUB.h"
4
5#include "autoconf/config.h"
4 6
5#include <sys/types.h> 7#include <sys/types.h>
6#include <sys/stat.h> 8#include <sys/stat.h>
7 9
8#include <unistd.h> 10#include <unistd.h>
9#include <fcntl.h> 11#include <fcntl.h>
10#include <signal.h> 12#include <signal.h>
11#include <sched.h> 13#include <sched.h>
12#if __linux
13#include <sys/syscall.h>
14#endif
15 14
16#include <pthread.h> 15#include <pthread.h>
17 16
18typedef void *InputStream; /* hack, but 5.6.1 is simply toooo old ;) */ 17typedef void *InputStream; /* hack, but 5.6.1 is simply toooo old ;) */
19typedef void *OutputStream; /* hack, but 5.6.1 is simply toooo old ;) */ 18typedef void *OutputStream; /* hack, but 5.6.1 is simply toooo old ;) */
265 264
266 type = req->type; 265 type = req->type;
267 266
268 switch (type) 267 switch (type)
269 { 268 {
269#if HAVE_PREADWRITE
270 case REQ_READ: req->result = pread (req->fd, req->dataptr, req->length, req->offset); break; 270 case REQ_READ: req->result = pread (req->fd, req->dataptr, req->length, req->offset); break;
271 case REQ_WRITE: req->result = pwrite (req->fd, req->dataptr, req->length, req->offset); break; 271 case REQ_WRITE: req->result = pwrite (req->fd, req->dataptr, req->length, req->offset); break;
272#if SYS_readahead 272#else
273# error "pread/pwrite cannot be emulated, fix your os"
274#endif
275
276#if HAVE_READAHEAD
273 case REQ_READAHEAD: req->result = readahead (req->fd, req->offset, req->length); break; 277 case REQ_READAHEAD: req->result = readahead (req->fd, req->offset, req->length); break;
274#else 278#else
279 // TODO: emulate
275 case REQ_READAHEAD: req->result = -1; errno = ENOSYS; break; 280 case REQ_READAHEAD: req->result = -1; errno = ENOSYS; break;
276#endif 281#endif
277 282
278 case REQ_STAT: req->result = stat (req->dataptr, req->statdata); break; 283 case REQ_STAT: req->result = stat (req->dataptr, req->statdata); break;
279 case REQ_LSTAT: req->result = lstat (req->dataptr, req->statdata); break; 284 case REQ_LSTAT: req->result = lstat (req->dataptr, req->statdata); break;
281 286
282 case REQ_OPEN: req->result = open (req->dataptr, req->fd, req->mode); break; 287 case REQ_OPEN: req->result = open (req->dataptr, req->fd, req->mode); break;
283 case REQ_CLOSE: req->result = close (req->fd); break; 288 case REQ_CLOSE: req->result = close (req->fd); break;
284 case REQ_UNLINK: req->result = unlink (req->dataptr); break; 289 case REQ_UNLINK: req->result = unlink (req->dataptr); break;
285 290
291 case REQ_FDATASYNC:
292#if HAVE_FDATASYNC
293 req->result = fdatasync (req->fd); break;
294#endif
286 case REQ_FSYNC: req->result = fsync (req->fd); break; 295 case REQ_FSYNC: req->result = fsync (req->fd); break;
287 case REQ_FDATASYNC: req->result = fdatasync (req->fd); break;
288 296
289 case REQ_QUIT: 297 case REQ_QUIT:
290 break; 298 break;
291 299
292 default: 300 default:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines