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.231 by root, Wed Feb 11 19:32:36 2015 UTC vs.
Revision 1.232 by root, Sat Jun 13 00:06:13 2015 UTC

1033 const_eio (SYNC_FILE_RANGE_WRITE) 1033 const_eio (SYNC_FILE_RANGE_WRITE)
1034 const_eio (SYNC_FILE_RANGE_WAIT_AFTER) 1034 const_eio (SYNC_FILE_RANGE_WAIT_AFTER)
1035 1035
1036 const_eio (FALLOC_FL_KEEP_SIZE) 1036 const_eio (FALLOC_FL_KEEP_SIZE)
1037 const_eio (FALLOC_FL_PUNCH_HOLE) 1037 const_eio (FALLOC_FL_PUNCH_HOLE)
1038 const_eio (FALLOC_FL_COLLAPSE_RANGE)
1039 const_eio (FALLOC_FL_ZERO_RANGE)
1038 1040
1039 const_eio (READDIR_DENTS) 1041 const_eio (READDIR_DENTS)
1040 const_eio (READDIR_DIRS_FIRST) 1042 const_eio (READDIR_DIRS_FIRST)
1041 const_eio (READDIR_STAT_ORDER) 1043 const_eio (READDIR_STAT_ORDER)
1042 const_eio (READDIR_FOUND_UNKNOWN) 1044 const_eio (READDIR_FOUND_UNKNOWN)
1110 PROTOTYPE: $ 1112 PROTOTYPE: $
1111 CODE: 1113 CODE:
1112 max_outstanding = maxreqs; 1114 max_outstanding = maxreqs;
1113 1115
1114void 1116void
1115aio_wd (SV8 *pathname, SV *callback=&PL_sv_undef) 1117aio_wd (SV8 *pathname, SV *callback = &PL_sv_undef)
1116 PPCODE: 1118 PPCODE:
1117{ 1119{
1118 dREQ; 1120 dREQ;
1119 1121
1120 req->type = EIO_WD_OPEN; 1122 req->type = EIO_WD_OPEN;
1122 1124
1123 REQ_SEND; 1125 REQ_SEND;
1124} 1126}
1125 1127
1126void 1128void
1127aio_open (SV8 *pathname, int flags, int mode, SV *callback=&PL_sv_undef) 1129aio_open (SV8 *pathname, int flags, int mode, SV *callback = &PL_sv_undef)
1128 PPCODE: 1130 PPCODE:
1129{ 1131{
1130 dREQ; 1132 dREQ;
1131 1133
1132 req->type = EIO_OPEN; 1134 req->type = EIO_OPEN;
1136 1138
1137 REQ_SEND; 1139 REQ_SEND;
1138} 1140}
1139 1141
1140void 1142void
1141aio_fsync (SV *fh, SV *callback=&PL_sv_undef) 1143aio_fsync (SV *fh, SV *callback = &PL_sv_undef)
1142 ALIAS: 1144 ALIAS:
1143 aio_fsync = EIO_FSYNC 1145 aio_fsync = EIO_FSYNC
1144 aio_fdatasync = EIO_FDATASYNC 1146 aio_fdatasync = EIO_FDATASYNC
1145 aio_syncfs = EIO_SYNCFS 1147 aio_syncfs = EIO_SYNCFS
1146 PPCODE: 1148 PPCODE:
1154 1156
1155 REQ_SEND; 1157 REQ_SEND;
1156} 1158}
1157 1159
1158void 1160void
1159aio_sync_file_range (SV *fh, off_t offset, size_t nbytes, UV flags, SV *callback=&PL_sv_undef) 1161aio_sync_file_range (SV *fh, off_t offset, size_t nbytes, UV flags, SV *callback = &PL_sv_undef)
1160 PPCODE: 1162 PPCODE:
1161{ 1163{
1162 int fd = s_fileno_croak (fh, 0); 1164 int fd = s_fileno_croak (fh, 0);
1163 dREQ; 1165 dREQ;
1164 1166
1171 1173
1172 REQ_SEND; 1174 REQ_SEND;
1173} 1175}
1174 1176
1175void 1177void
1176aio_allocate (SV *fh, int mode, off_t offset, size_t len, SV *callback=&PL_sv_undef) 1178aio_allocate (SV *fh, int mode, off_t offset, size_t len, SV *callback = &PL_sv_undef)
1177 PPCODE: 1179 PPCODE:
1178{ 1180{
1179 int fd = s_fileno_croak (fh, 0); 1181 int fd = s_fileno_croak (fh, 0);
1180 dREQ; 1182 dREQ;
1181 1183
1188 1190
1189 REQ_SEND; 1191 REQ_SEND;
1190} 1192}
1191 1193
1192void 1194void
1193aio_close (SV *fh, SV *callback=&PL_sv_undef) 1195aio_close (SV *fh, SV *callback = &PL_sv_undef)
1194 PPCODE: 1196 PPCODE:
1195{ 1197{
1196 static int close_fd = -1; /* dummy fd to close fds via dup2 */ 1198 static int close_fd = -1; /* dummy fd to close fds via dup2 */
1197 int fd = s_fileno_croak (fh, 0); 1199 int fd = s_fileno_croak (fh, 0);
1198 dREQ; 1200 dREQ;
1222 1224
1223 REQ_SEND; 1225 REQ_SEND;
1224} 1226}
1225 1227
1226void 1228void
1227aio_seek (SV *fh, SV *offset, int whence, SV *callback=&PL_sv_undef) 1229aio_seek (SV *fh, SV *offset, int whence, SV *callback = &PL_sv_undef)
1228 PPCODE: 1230 PPCODE:
1229{ 1231{
1230 int fd = s_fileno_croak (fh, 0); 1232 int fd = s_fileno_croak (fh, 0);
1231 dREQ; 1233 dREQ;
1232 1234
1238 1240
1239 REQ_SEND; 1241 REQ_SEND;
1240} 1242}
1241 1243
1242void 1244void
1243aio_read (SV *fh, SV *offset, SV *length, SV8 *data, IV dataoffset, SV *callback=&PL_sv_undef) 1245aio_read (SV *fh, SV *offset, SV *length, SV8 *data, IV dataoffset, SV *callback = &PL_sv_undef)
1244 ALIAS: 1246 ALIAS:
1245 aio_read = EIO_READ 1247 aio_read = EIO_READ
1246 aio_write = EIO_WRITE 1248 aio_write = EIO_WRITE
1247 PPCODE: 1249 PPCODE:
1248{ 1250{
1293 REQ_SEND; 1295 REQ_SEND;
1294 } 1296 }
1295} 1297}
1296 1298
1297void 1299void
1298aio_readlink (SV8 *pathname, SV *callback=&PL_sv_undef) 1300aio_readlink (SV8 *pathname, SV *callback = &PL_sv_undef)
1299 ALIAS: 1301 ALIAS:
1300 aio_readlink = EIO_READLINK 1302 aio_readlink = EIO_READLINK
1301 aio_realpath = EIO_REALPATH 1303 aio_realpath = EIO_REALPATH
1302 PPCODE: 1304 PPCODE:
1303{ 1305{
1308 1310
1309 REQ_SEND; 1311 REQ_SEND;
1310} 1312}
1311 1313
1312void 1314void
1313aio_sendfile (SV *out_fh, SV *in_fh, off_t in_offset, size_t length, SV *callback=&PL_sv_undef) 1315aio_sendfile (SV *out_fh, SV *in_fh, off_t in_offset, size_t length, SV *callback = &PL_sv_undef)
1314 PPCODE: 1316 PPCODE:
1315{ 1317{
1316 int ifd = s_fileno_croak (in_fh , 0); 1318 int ifd = s_fileno_croak (in_fh , 0);
1317 int ofd = s_fileno_croak (out_fh, 1); 1319 int ofd = s_fileno_croak (out_fh, 1);
1318 dREQ; 1320 dREQ;
1327 1329
1328 REQ_SEND; 1330 REQ_SEND;
1329} 1331}
1330 1332
1331void 1333void
1332aio_readahead (SV *fh, off_t offset, size_t length, SV *callback=&PL_sv_undef) 1334aio_readahead (SV *fh, off_t offset, size_t length, SV *callback = &PL_sv_undef)
1333 PPCODE: 1335 PPCODE:
1334{ 1336{
1335 int fd = s_fileno_croak (fh, 0); 1337 int fd = s_fileno_croak (fh, 0);
1336 dREQ; 1338 dREQ;
1337 1339
1343 1345
1344 REQ_SEND; 1346 REQ_SEND;
1345} 1347}
1346 1348
1347void 1349void
1348aio_stat (SV8 *fh_or_path, SV *callback=&PL_sv_undef) 1350aio_stat (SV8 *fh_or_path, SV *callback = &PL_sv_undef)
1349 ALIAS: 1351 ALIAS:
1350 aio_stat = EIO_STAT 1352 aio_stat = EIO_STAT
1351 aio_lstat = EIO_LSTAT 1353 aio_lstat = EIO_LSTAT
1352 aio_statvfs = EIO_STATVFS 1354 aio_statvfs = EIO_STATVFS
1353 PPCODE: 1355 PPCODE:
1374 RETVAL = makedev (maj, min); 1376 RETVAL = makedev (maj, min);
1375 OUTPUT: 1377 OUTPUT:
1376 RETVAL 1378 RETVAL
1377 1379
1378void 1380void
1379aio_utime (SV8 *fh_or_path, SV *atime, SV *mtime, SV *callback=&PL_sv_undef) 1381aio_utime (SV8 *fh_or_path, SV *atime, SV *mtime, SV *callback = &PL_sv_undef)
1380 PPCODE: 1382 PPCODE:
1381{ 1383{
1382 dREQ; 1384 dREQ;
1383 1385
1384 req->nv1 = SvOK (atime) ? SvNV (atime) : -1.; 1386 req->nv1 = SvOK (atime) ? SvNV (atime) : -1.;
1387 1389
1388 REQ_SEND; 1390 REQ_SEND;
1389} 1391}
1390 1392
1391void 1393void
1392aio_truncate (SV8 *fh_or_path, SV *offset, SV *callback=&PL_sv_undef) 1394aio_truncate (SV8 *fh_or_path, SV *offset, SV *callback = &PL_sv_undef)
1393 PPCODE: 1395 PPCODE:
1394{ 1396{
1395 dREQ; 1397 dREQ;
1396 1398
1397 req->offs = SvOK (offset) ? SvVAL64 (offset) : -1; 1399 req->offs = SvOK (offset) ? SvVAL64 (offset) : -1;
1399 1401
1400 REQ_SEND; 1402 REQ_SEND;
1401} 1403}
1402 1404
1403void 1405void
1404aio_chmod (SV8 *fh_or_path, int mode, SV *callback=&PL_sv_undef) 1406aio_chmod (SV8 *fh_or_path, int mode, SV *callback = &PL_sv_undef)
1405 PPCODE: 1407 PPCODE:
1406{ 1408{
1407 dREQ; 1409 dREQ;
1408 1410
1409 req->int2 = mode; 1411 req->int2 = mode;
1411 1413
1412 REQ_SEND; 1414 REQ_SEND;
1413} 1415}
1414 1416
1415void 1417void
1416aio_chown (SV8 *fh_or_path, SV *uid, SV *gid, SV *callback=&PL_sv_undef) 1418aio_chown (SV8 *fh_or_path, SV *uid, SV *gid, SV *callback = &PL_sv_undef)
1417 PPCODE: 1419 PPCODE:
1418{ 1420{
1419 dREQ; 1421 dREQ;
1420 1422
1421 req->int2 = SvOK (uid) ? SvIV (uid) : -1; 1423 req->int2 = SvOK (uid) ? SvIV (uid) : -1;
1424 1426
1425 REQ_SEND; 1427 REQ_SEND;
1426} 1428}
1427 1429
1428void 1430void
1429aio_readdirx (SV8 *pathname, IV flags, SV *callback=&PL_sv_undef) 1431aio_readdirx (SV8 *pathname, IV flags, SV *callback = &PL_sv_undef)
1430 PPCODE: 1432 PPCODE:
1431{ 1433{
1432 dREQ; 1434 dREQ;
1433 1435
1434 req->type = EIO_READDIR; 1436 req->type = EIO_READDIR;
1441 1443
1442 REQ_SEND; 1444 REQ_SEND;
1443} 1445}
1444 1446
1445void 1447void
1446aio_mkdir (SV8 *pathname, int mode, SV *callback=&PL_sv_undef) 1448aio_mkdir (SV8 *pathname, int mode, SV *callback = &PL_sv_undef)
1447 PPCODE: 1449 PPCODE:
1448{ 1450{
1449 dREQ; 1451 dREQ;
1450 1452
1451 req->type = EIO_MKDIR; 1453 req->type = EIO_MKDIR;
1454 1456
1455 REQ_SEND; 1457 REQ_SEND;
1456} 1458}
1457 1459
1458void 1460void
1459aio_unlink (SV8 *pathname, SV *callback=&PL_sv_undef) 1461aio_unlink (SV8 *pathname, SV *callback = &PL_sv_undef)
1460 ALIAS: 1462 ALIAS:
1461 aio_unlink = EIO_UNLINK 1463 aio_unlink = EIO_UNLINK
1462 aio_rmdir = EIO_RMDIR 1464 aio_rmdir = EIO_RMDIR
1463 aio_readdir = EIO_READDIR 1465 aio_readdir = EIO_READDIR
1464 PPCODE: 1466 PPCODE:
1470 1472
1471 REQ_SEND; 1473 REQ_SEND;
1472} 1474}
1473 1475
1474void 1476void
1475aio_link (SV8 *oldpath, SV8 *newpath, SV *callback=&PL_sv_undef) 1477aio_link (SV8 *oldpath, SV8 *newpath, SV *callback = &PL_sv_undef)
1476 ALIAS: 1478 ALIAS:
1477 aio_link = EIO_LINK 1479 aio_link = EIO_LINK
1478 aio_symlink = EIO_SYMLINK 1480 aio_symlink = EIO_SYMLINK
1479 aio_rename = EIO_RENAME 1481 aio_rename = EIO_RENAME
1480 PPCODE: 1482 PPCODE:
1489 1491
1490 REQ_SEND; 1492 REQ_SEND;
1491} 1493}
1492 1494
1493void 1495void
1494aio_mknod (SV8 *pathname, int mode, UV dev, SV *callback=&PL_sv_undef) 1496aio_mknod (SV8 *pathname, int mode, UV dev, SV *callback = &PL_sv_undef)
1495 PPCODE: 1497 PPCODE:
1496{ 1498{
1497 dREQ; 1499 dREQ;
1498 1500
1499 req->type = EIO_MKNOD; 1501 req->type = EIO_MKNOD;
1503 1505
1504 REQ_SEND; 1506 REQ_SEND;
1505} 1507}
1506 1508
1507void 1509void
1508aio_mtouch (SV8 *data, IV offset = 0, SV *length = &PL_sv_undef, int flags = 0, SV *callback=&PL_sv_undef) 1510aio_mtouch (SV8 *data, IV offset = 0, SV *length = &PL_sv_undef, int flags = 0, SV *callback = &PL_sv_undef)
1509 ALIAS: 1511 ALIAS:
1510 aio_mtouch = EIO_MTOUCH 1512 aio_mtouch = EIO_MTOUCH
1511 aio_msync = EIO_MSYNC 1513 aio_msync = EIO_MSYNC
1512 PPCODE: 1514 PPCODE:
1513{ 1515{
1536 REQ_SEND; 1538 REQ_SEND;
1537 } 1539 }
1538} 1540}
1539 1541
1540void 1542void
1541aio_mlock (SV8 *data, IV offset = 0, SV *length = &PL_sv_undef, SV *callback=&PL_sv_undef) 1543aio_mlock (SV8 *data, IV offset = 0, SV *length = &PL_sv_undef, SV *callback = &PL_sv_undef)
1542 PPCODE: 1544 PPCODE:
1543{ 1545{
1544 STRLEN svlen; 1546 STRLEN svlen;
1545 char *svptr = SvPVbyte (data, svlen); 1547 char *svptr = SvPVbyte (data, svlen);
1546 UV len = SvUV (length); 1548 UV len = SvUV (length);
1565 REQ_SEND; 1567 REQ_SEND;
1566 } 1568 }
1567} 1569}
1568 1570
1569void 1571void
1570aio_mlockall (IV flags, SV *callback=&PL_sv_undef) 1572aio_mlockall (IV flags, SV *callback = &PL_sv_undef)
1571 PPCODE: 1573 PPCODE:
1572{ 1574{
1573 dREQ; 1575 dREQ;
1574 1576
1575 req->type = EIO_MLOCKALL; 1577 req->type = EIO_MLOCKALL;
1577 1579
1578 REQ_SEND; 1580 REQ_SEND;
1579} 1581}
1580 1582
1581void 1583void
1582aio_fiemap (SV *fh, off_t start, SV *length, U32 flags, SV *count, SV *callback=&PL_sv_undef) 1584aio_fiemap (SV *fh, off_t start, SV *length, U32 flags, SV *count, SV *callback = &PL_sv_undef)
1583 PPCODE: 1585 PPCODE:
1584{ 1586{
1585 int fd = s_fileno_croak (fh, 0); 1587 int fd = s_fileno_croak (fh, 0);
1586 dREQ; 1588 dREQ;
1587 1589
1600 1602
1601 REQ_SEND; 1603 REQ_SEND;
1602} 1604}
1603 1605
1604void 1606void
1605aio_busy (double delay, SV *callback=&PL_sv_undef) 1607aio_busy (double delay, SV *callback = &PL_sv_undef)
1606 PPCODE: 1608 PPCODE:
1607{ 1609{
1608 dREQ; 1610 dREQ;
1609 1611
1610 req->type = EIO_BUSY; 1612 req->type = EIO_BUSY;
1612 1614
1613 REQ_SEND; 1615 REQ_SEND;
1614} 1616}
1615 1617
1616void 1618void
1617aio_group (SV *callback=&PL_sv_undef) 1619aio_group (SV *callback = &PL_sv_undef)
1618 PPCODE: 1620 PPCODE:
1619{ 1621{
1620 dREQ; 1622 dREQ;
1621 1623
1622 req->type = EIO_GROUP; 1624 req->type = EIO_GROUP;
1627 1629
1628 XPUSHs (req_sv (req, aio_grp_stash)); 1630 XPUSHs (req_sv (req, aio_grp_stash));
1629} 1631}
1630 1632
1631void 1633void
1632aio_nop (SV *callback=&PL_sv_undef) 1634aio_nop (SV *callback = &PL_sv_undef)
1633 ALIAS: 1635 ALIAS:
1634 aio_nop = EIO_NOP 1636 aio_nop = EIO_NOP
1635 aio_sync = EIO_SYNC 1637 aio_sync = EIO_SYNC
1636 PPCODE: 1638 PPCODE:
1637{ 1639{
1641 1643
1642 REQ_SEND; 1644 REQ_SEND;
1643} 1645}
1644 1646
1645int 1647int
1646aioreq_pri (int pri = 0) 1648aioreq_pri (int pri = NO_INIT)
1647 CODE: 1649 CODE:
1648 RETVAL = next_pri; 1650 RETVAL = next_pri;
1649 if (items > 0) 1651 if (items > 0)
1650 { 1652 {
1651 if (pri < EIO_PRI_MIN) pri = EIO_PRI_MIN; 1653 if (pri < EIO_PRI_MIN) pri = EIO_PRI_MIN;
1935cancel (aio_req_ornot req) 1937cancel (aio_req_ornot req)
1936 CODE: 1938 CODE:
1937 eio_cancel (req); 1939 eio_cancel (req);
1938 1940
1939void 1941void
1940cb (aio_req_ornot req, SV *callback=&PL_sv_undef) 1942cb (aio_req_ornot req, SV *callback = NO_INIT)
1941 PPCODE: 1943 PPCODE:
1942{ 1944{
1943 if (GIMME_V != G_VOID) 1945 if (GIMME_V != G_VOID)
1944 XPUSHs (req->callback ? sv_2mortal (newRV_inc (req->callback)) : &PL_sv_undef); 1946 XPUSHs (req->callback ? sv_2mortal (newRV_inc (req->callback)) : &PL_sv_undef);
1945 1947
1946 if (items > 1) 1948 if (items > 1)
1947 { 1949 {
1948 SV *cb_cv =get_cb (callback); 1950 SV *cb_cv = get_cb (callback);
1949 1951
1950 SvREFCNT_dec (req->callback); 1952 SvREFCNT_dec (req->callback);
1951 req->callback = SvREFCNT_inc (cb_cv); 1953 req->callback = SvREFCNT_inc (cb_cv);
1952 } 1954 }
1953} 1955}
2010limit (aio_req grp, int limit) 2012limit (aio_req grp, int limit)
2011 CODE: 2013 CODE:
2012 eio_grp_limit (grp, limit); 2014 eio_grp_limit (grp, limit);
2013 2015
2014void 2016void
2015feed (aio_req grp, SV *callback=&PL_sv_undef) 2017feed (aio_req grp, SV *callback = &PL_sv_undef)
2016 CODE: 2018 CODE:
2017{ 2019{
2018 SvREFCNT_dec (grp->sv2); 2020 SvREFCNT_dec (grp->sv2);
2019 grp->sv2 = newSVsv (callback); 2021 grp->sv2 = newSVsv (callback);
2020 grp->feed = aio_grp_feed; 2022 grp->feed = aio_grp_feed;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines