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.30 by root, Sat Jul 9 23:38:07 2005 UTC vs.
Revision 1.31 by root, Sun Jul 10 01:02:51 2005 UTC

402void 402void
403max_parallel(nthreads) 403max_parallel(nthreads)
404 int nthreads 404 int nthreads
405 PROTOTYPE: $ 405 PROTOTYPE: $
406 CODE: 406 CODE:
407{
407 int cur = started; 408 int cur = started;
408 while (cur > nthreads) 409 while (cur > nthreads)
409 { 410 {
410 end_thread (); 411 end_thread ();
411 cur--; 412 cur--;
414 while (started > nthreads) 415 while (started > nthreads)
415 { 416 {
416 poll_wait (); 417 poll_wait ();
417 poll_cb (aTHX); 418 poll_cb (aTHX);
418 } 419 }
420}
419 421
420void 422void
421aio_open(pathname,flags,mode,callback) 423aio_open(pathname,flags,mode,callback)
422 SV * pathname 424 SV * pathname
423 int flags 425 int flags
424 int mode 426 int mode
425 SV * callback 427 SV * callback
426 PROTOTYPE: $$$$ 428 PROTOTYPE: $$$$
427 CODE: 429 CODE:
430{
428 aio_req req; 431 aio_req req;
429 432
430 Newz (0, req, 1, aio_cb); 433 Newz (0, req, 1, aio_cb);
431 434
432 if (!req) 435 if (!req)
438 req->fd = flags; 441 req->fd = flags;
439 req->mode = mode; 442 req->mode = mode;
440 req->callback = SvREFCNT_inc (callback); 443 req->callback = SvREFCNT_inc (callback);
441 444
442 send_req (req); 445 send_req (req);
446}
443 447
444void 448void
445aio_close(fh,callback) 449aio_close(fh,callback)
446 InputStream fh 450 InputStream fh
447 SV * callback 451 SV * callback
449 ALIAS: 453 ALIAS:
450 aio_close = REQ_CLOSE 454 aio_close = REQ_CLOSE
451 aio_fsync = REQ_FSYNC 455 aio_fsync = REQ_FSYNC
452 aio_fdatasync = REQ_FDATASYNC 456 aio_fdatasync = REQ_FDATASYNC
453 CODE: 457 CODE:
458{
454 aio_req req; 459 aio_req req;
455 460
456 Newz (0, req, 1, aio_cb); 461 Newz (0, req, 1, aio_cb);
457 462
458 if (!req) 463 if (!req)
461 req->type = ix; 466 req->type = ix;
462 req->fd = PerlIO_fileno (fh); 467 req->fd = PerlIO_fileno (fh);
463 req->callback = SvREFCNT_inc (callback); 468 req->callback = SvREFCNT_inc (callback);
464 469
465 send_req (req); 470 send_req (req);
471}
466 472
467void 473void
468aio_read(fh,offset,length,data,dataoffset,callback) 474aio_read(fh,offset,length,data,dataoffset,callback)
469 InputStream fh 475 InputStream fh
470 UV offset 476 UV offset
487 PROTOTYPE: $$$$$$ 493 PROTOTYPE: $$$$$$
488 CODE: 494 CODE:
489 read_write (aTHX_ 1, PerlIO_fileno (fh), offset, length, data, dataoffset, callback); 495 read_write (aTHX_ 1, PerlIO_fileno (fh), offset, length, data, dataoffset, callback);
490 496
491void 497void
498aio_readahead(fh,offset,length,callback)
499 InputStream fh
500 UV offset
501 IV length
502 SV * callback
503 PROTOTYPE: $$$$
504 CODE:
505{
506 aio_req req;
507
508 if (length < 0)
509 croak ("length must not be negative");
510
511 Newz (0, req, 1, aio_cb);
512
513 if (!req)
514 croak ("out of memory during aio_req allocation");
515
516 req->type = REQ_READAHEAD;
517 req->fd = PerlIO_fileno (fh);
518 req->offset = offset;
519 req->length = length;
520 req->callback = SvREFCNT_inc (callback);
521
522 send_req (req);
523}
524
525void
492aio_stat(fh_or_path,callback) 526aio_stat(fh_or_path,callback)
493 SV * fh_or_path 527 SV * fh_or_path
494 SV * callback 528 SV * callback
495 PROTOTYPE: $$ 529 PROTOTYPE: $$
496 ALIAS: 530 ALIAS:
497 aio_lstat = 1 531 aio_lstat = 1
498 CODE: 532 CODE:
533{
499 aio_req req; 534 aio_req req;
500 535
501 Newz (0, req, 1, aio_cb); 536 Newz (0, req, 1, aio_cb);
502 537
503 if (!req) 538 if (!req)
521 } 556 }
522 557
523 req->callback = SvREFCNT_inc (callback); 558 req->callback = SvREFCNT_inc (callback);
524 559
525 send_req (req); 560 send_req (req);
561}
526 562
527void 563void
528aio_unlink(pathname,callback) 564aio_unlink(pathname,callback)
529 SV * pathname 565 SV * pathname
530 SV * callback 566 SV * callback
531 PROTOTYPE: $$ 567 PROTOTYPE: $$
532 CODE: 568 CODE:
569{
533 aio_req req; 570 aio_req req;
534 571
535 Newz (0, req, 1, aio_cb); 572 Newz (0, req, 1, aio_cb);
536 573
537 if (!req) 574 if (!req)
541 req->data = newSVsv (pathname); 578 req->data = newSVsv (pathname);
542 req->dataptr = SvPV_nolen (req->data); 579 req->dataptr = SvPV_nolen (req->data);
543 req->callback = SvREFCNT_inc (callback); 580 req->callback = SvREFCNT_inc (callback);
544 581
545 send_req (req); 582 send_req (req);
583}
546 584
547int 585int
548poll_fileno() 586poll_fileno()
549 PROTOTYPE: 587 PROTOTYPE:
550 CODE: 588 CODE:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines