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.80 by root, Fri Oct 27 19:17:23 2006 UTC vs.
Revision 1.83 by root, Sat Oct 28 00:17:30 2006 UTC

92 REQ_READ, REQ_WRITE, REQ_READAHEAD, 92 REQ_READ, REQ_WRITE, REQ_READAHEAD,
93 REQ_SENDFILE, 93 REQ_SENDFILE,
94 REQ_STAT, REQ_LSTAT, REQ_FSTAT, 94 REQ_STAT, REQ_LSTAT, REQ_FSTAT,
95 REQ_FSYNC, REQ_FDATASYNC, 95 REQ_FSYNC, REQ_FDATASYNC,
96 REQ_UNLINK, REQ_RMDIR, REQ_RENAME, 96 REQ_UNLINK, REQ_RMDIR, REQ_RENAME,
97 REQ_READDIR, 97 REQ_MKNOD, REQ_READDIR,
98 REQ_LINK, REQ_SYMLINK, 98 REQ_LINK, REQ_SYMLINK,
99 REQ_GROUP, REQ_NOP, 99 REQ_GROUP, REQ_NOP,
100 REQ_BUSY, 100 REQ_BUSY,
101}; 101};
102 102
610 Newz (0, req, 1, aio_cb); 610 Newz (0, req, 1, aio_cb);
611 611
612 req->type = REQ_QUIT; 612 req->type = REQ_QUIT;
613 req->pri = PRI_MAX + PRI_BIAS; 613 req->pri = PRI_MAX + PRI_BIAS;
614 614
615 req_send (req); 615 LOCK (reqlock);
616 reqq_push (&req_queue, req);
617 pthread_cond_signal (&reqwait);
618 UNLOCK (reqlock);
616 619
617 LOCK (wrklock); 620 LOCK (wrklock);
618 --started; 621 --started;
619 UNLOCK (wrklock); 622 UNLOCK (wrklock);
620} 623}
1043 case REQ_UNLINK: req->result = unlink (req->dataptr); break; 1046 case REQ_UNLINK: req->result = unlink (req->dataptr); break;
1044 case REQ_RMDIR: req->result = rmdir (req->dataptr); break; 1047 case REQ_RMDIR: req->result = rmdir (req->dataptr); break;
1045 case REQ_RENAME: req->result = rename (req->data2ptr, req->dataptr); break; 1048 case REQ_RENAME: req->result = rename (req->data2ptr, req->dataptr); break;
1046 case REQ_LINK: req->result = link (req->data2ptr, req->dataptr); break; 1049 case REQ_LINK: req->result = link (req->data2ptr, req->dataptr); break;
1047 case REQ_SYMLINK: req->result = symlink (req->data2ptr, req->dataptr); break; 1050 case REQ_SYMLINK: req->result = symlink (req->data2ptr, req->dataptr); break;
1051 case REQ_MKNOD: req->result = mknod (req->data2ptr, req->mode, (dev_t)req->offset); break;
1048 1052
1049 case REQ_FDATASYNC: req->result = fdatasync (req->fd); break; 1053 case REQ_FDATASYNC: req->result = fdatasync (req->fd); break;
1050 case REQ_FSYNC: req->result = fsync (req->fd); break; 1054 case REQ_FSYNC: req->result = fsync (req->fd); break;
1051 case REQ_READDIR: scandir_ (req, self); break; 1055 case REQ_READDIR: scandir_ (req, self); break;
1052 1056
1178PROTOTYPES: ENABLE 1182PROTOTYPES: ENABLE
1179 1183
1180BOOT: 1184BOOT:
1181{ 1185{
1182 HV *stash = gv_stashpv ("IO::AIO", 1); 1186 HV *stash = gv_stashpv ("IO::AIO", 1);
1187
1183 newCONSTSUB (stash, "EXDEV", newSViv (EXDEV)); 1188 newCONSTSUB (stash, "EXDEV", newSViv (EXDEV));
1184 newCONSTSUB (stash, "O_RDONLY", newSViv (O_RDONLY)); 1189 newCONSTSUB (stash, "O_RDONLY", newSViv (O_RDONLY));
1185 newCONSTSUB (stash, "O_WRONLY", newSViv (O_WRONLY)); 1190 newCONSTSUB (stash, "O_WRONLY", newSViv (O_WRONLY));
1191 newCONSTSUB (stash, "O_CREAT", newSViv (O_CREAT));
1192 newCONSTSUB (stash, "O_TRUNC", newSViv (O_TRUNC));
1193 newCONSTSUB (stash, "S_IFIFO", newSViv (S_IFIFO));
1186 1194
1187 create_pipe (); 1195 create_pipe ();
1188 pthread_atfork (atfork_prepare, atfork_parent, atfork_child); 1196 pthread_atfork (atfork_prepare, atfork_parent, atfork_child);
1189 1197
1190 start_thread (); 1198 start_thread ();
1423 req->type = ix; 1431 req->type = ix;
1424 req->fh = newSVsv (oldpath); 1432 req->fh = newSVsv (oldpath);
1425 req->data2ptr = SvPVbyte_nolen (req->fh); 1433 req->data2ptr = SvPVbyte_nolen (req->fh);
1426 req->data = newSVsv (newpath); 1434 req->data = newSVsv (newpath);
1427 req->dataptr = SvPVbyte_nolen (req->data); 1435 req->dataptr = SvPVbyte_nolen (req->data);
1436
1437 REQ_SEND;
1438}
1439
1440void
1441aio_mknod (pathname,mode,dev,callback=&PL_sv_undef)
1442 SV * pathname
1443 SV * callback
1444 UV mode
1445 UV dev
1446 PPCODE:
1447{
1448 dREQ;
1449
1450 req->type = REQ_MKNOD;
1451 req->data = newSVsv (pathname);
1452 req->dataptr = SvPVbyte_nolen (req->data);
1453 req->mode = (mode_t)mode;
1454 req->offset = dev;
1428 1455
1429 REQ_SEND; 1456 REQ_SEND;
1430} 1457}
1431 1458
1432void 1459void

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines