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.89 by root, Tue Oct 31 00:11:52 2006 UTC vs.
Revision 1.93 by root, Wed Nov 8 02:01:02 2006 UTC

87 self->dbuf = aio_buf = malloc (AIO_BUFSIZE); \ 87 self->dbuf = aio_buf = malloc (AIO_BUFSIZE); \
88 UNLOCK (wrklock); \ 88 UNLOCK (wrklock); \
89 if (!aio_buf) \ 89 if (!aio_buf) \
90 return -1; 90 return -1;
91 91
92typedef SV SV8; /* byte-sv, used for argument-checking */
93
92enum { 94enum {
93 REQ_QUIT, 95 REQ_QUIT,
94 REQ_OPEN, REQ_CLOSE, 96 REQ_OPEN, REQ_CLOSE,
95 REQ_READ, REQ_WRITE, REQ_READAHEAD, 97 REQ_READ, REQ_WRITE, REQ_READAHEAD,
96 REQ_SENDFILE, 98 REQ_SENDFILE,
445 PUSHs (sv_2mortal (newSViv (req->result))); 447 PUSHs (sv_2mortal (newSViv (req->result)));
446 PUTBACK; 448 PUTBACK;
447 call_pv ("IO::AIO::_fd2fh", G_SCALAR | G_EVAL); 449 call_pv ("IO::AIO::_fd2fh", G_SCALAR | G_EVAL);
448 SPAGAIN; 450 SPAGAIN;
449 451
450 fh = SvREFCNT_inc (POPs); 452 fh = POPs;
451
452 PUSHMARK (SP); 453 PUSHMARK (SP);
453 XPUSHs (sv_2mortal (fh)); 454 XPUSHs (fh);
454 } 455 }
455 break; 456 break;
456 457
457 case REQ_GROUP: 458 case REQ_GROUP:
458 req->int1 = 2; /* mark group as finished */ 459 req->int1 = 2; /* mark group as finished */
1309 OUTPUT: 1310 OUTPUT:
1310 RETVAL 1311 RETVAL
1311 1312
1312void 1313void
1313aio_open (pathname,flags,mode,callback=&PL_sv_undef) 1314aio_open (pathname,flags,mode,callback=&PL_sv_undef)
1314 SV * pathname 1315 SV8 * pathname
1315 int flags 1316 int flags
1316 int mode 1317 int mode
1317 SV * callback 1318 SV * callback
1318 PROTOTYPE: $$$;$ 1319 PROTOTYPE: $$$;$
1319 PPCODE: 1320 PPCODE:
1352void 1353void
1353aio_read (fh,offset,length,data,dataoffset,callback=&PL_sv_undef) 1354aio_read (fh,offset,length,data,dataoffset,callback=&PL_sv_undef)
1354 SV * fh 1355 SV * fh
1355 UV offset 1356 UV offset
1356 UV length 1357 UV length
1357 SV * data 1358 SV8 * data
1358 UV dataoffset 1359 UV dataoffset
1359 SV * callback 1360 SV * callback
1360 ALIAS: 1361 ALIAS:
1361 aio_read = REQ_READ 1362 aio_read = REQ_READ
1362 aio_write = REQ_WRITE 1363 aio_write = REQ_WRITE
1413 } 1414 }
1414} 1415}
1415 1416
1416void 1417void
1417aio_readlink (path,callback=&PL_sv_undef) 1418aio_readlink (path,callback=&PL_sv_undef)
1418 SV * path 1419 SV8 * path
1419 SV * callback 1420 SV * callback
1420 PROTOTYPE: $$;$ 1421 PROTOTYPE: $$;$
1421 PPCODE: 1422 PPCODE:
1422{ 1423{
1423 SV *data; 1424 SV *data;
1478 REQ_SEND; 1479 REQ_SEND;
1479} 1480}
1480 1481
1481void 1482void
1482aio_stat (fh_or_path,callback=&PL_sv_undef) 1483aio_stat (fh_or_path,callback=&PL_sv_undef)
1483 SV * fh_or_path 1484 SV8 * fh_or_path
1484 SV * callback 1485 SV * callback
1485 ALIAS: 1486 ALIAS:
1486 aio_stat = REQ_STAT 1487 aio_stat = REQ_STAT
1487 aio_lstat = REQ_LSTAT 1488 aio_lstat = REQ_LSTAT
1488 PPCODE: 1489 PPCODE:
1514 REQ_SEND; 1515 REQ_SEND;
1515} 1516}
1516 1517
1517void 1518void
1518aio_unlink (pathname,callback=&PL_sv_undef) 1519aio_unlink (pathname,callback=&PL_sv_undef)
1519 SV * pathname 1520 SV8 * pathname
1520 SV * callback 1521 SV * callback
1521 ALIAS: 1522 ALIAS:
1522 aio_unlink = REQ_UNLINK 1523 aio_unlink = REQ_UNLINK
1523 aio_rmdir = REQ_RMDIR 1524 aio_rmdir = REQ_RMDIR
1524 aio_readdir = REQ_READDIR 1525 aio_readdir = REQ_READDIR
1533 REQ_SEND; 1534 REQ_SEND;
1534} 1535}
1535 1536
1536void 1537void
1537aio_link (oldpath,newpath,callback=&PL_sv_undef) 1538aio_link (oldpath,newpath,callback=&PL_sv_undef)
1538 SV * oldpath 1539 SV8 * oldpath
1539 SV * newpath 1540 SV8 * newpath
1540 SV * callback 1541 SV * callback
1541 ALIAS: 1542 ALIAS:
1542 aio_link = REQ_LINK 1543 aio_link = REQ_LINK
1543 aio_symlink = REQ_SYMLINK 1544 aio_symlink = REQ_SYMLINK
1544 aio_rename = REQ_RENAME 1545 aio_rename = REQ_RENAME
1555 REQ_SEND; 1556 REQ_SEND;
1556} 1557}
1557 1558
1558void 1559void
1559aio_mknod (pathname,mode,dev,callback=&PL_sv_undef) 1560aio_mknod (pathname,mode,dev,callback=&PL_sv_undef)
1560 SV * pathname 1561 SV8 * pathname
1561 SV * callback 1562 SV * callback
1562 UV mode 1563 UV mode
1563 UV dev 1564 UV dev
1564 PPCODE: 1565 PPCODE:
1565{ 1566{
1642 PROTOTYPE: 1643 PROTOTYPE:
1643 CODE: 1644 CODE:
1644 while (nreqs) 1645 while (nreqs)
1645 { 1646 {
1646 poll_wait (); 1647 poll_wait ();
1647 poll_cb (0); 1648 poll_cb ();
1648 } 1649 }
1649 1650
1650void 1651int
1651poll() 1652poll()
1652 PROTOTYPE: 1653 PROTOTYPE:
1653 CODE: 1654 CODE:
1654 if (nreqs)
1655 {
1656 poll_wait (); 1655 poll_wait ();
1657 poll_cb (0); 1656 RETVAL = poll_cb ();
1658 } 1657 OUTPUT:
1658 RETVAL
1659 1659
1660int 1660int
1661poll_fileno() 1661poll_fileno()
1662 PROTOTYPE: 1662 PROTOTYPE:
1663 CODE: 1663 CODE:
1675 1675
1676void 1676void
1677poll_wait() 1677poll_wait()
1678 PROTOTYPE: 1678 PROTOTYPE:
1679 CODE: 1679 CODE:
1680 if (nreqs)
1681 poll_wait (); 1680 poll_wait ();
1682 1681
1683int 1682int
1684nreqs() 1683nreqs()
1685 PROTOTYPE: 1684 PROTOTYPE:
1686 CODE: 1685 CODE:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines