--- IO-AIO/AIO.xs 2006/10/27 19:17:23 1.80 +++ IO-AIO/AIO.xs 2006/10/27 20:10:06 1.81 @@ -94,7 +94,7 @@ REQ_STAT, REQ_LSTAT, REQ_FSTAT, REQ_FSYNC, REQ_FDATASYNC, REQ_UNLINK, REQ_RMDIR, REQ_RENAME, - REQ_READDIR, + REQ_MKNOD, REQ_READDIR, REQ_LINK, REQ_SYMLINK, REQ_GROUP, REQ_NOP, REQ_BUSY, @@ -1045,6 +1045,7 @@ case REQ_RENAME: req->result = rename (req->data2ptr, req->dataptr); break; case REQ_LINK: req->result = link (req->data2ptr, req->dataptr); break; case REQ_SYMLINK: req->result = symlink (req->data2ptr, req->dataptr); break; + case REQ_MKNOD: req->result = mknod (req->data2ptr, req->mode, (dev_t)req->offset); break; case REQ_FDATASYNC: req->result = fdatasync (req->fd); break; case REQ_FSYNC: req->result = fsync (req->fd); break; @@ -1183,6 +1184,8 @@ newCONSTSUB (stash, "EXDEV", newSViv (EXDEV)); newCONSTSUB (stash, "O_RDONLY", newSViv (O_RDONLY)); newCONSTSUB (stash, "O_WRONLY", newSViv (O_WRONLY)); + newCONSTSUB (stash, "O_CREAT", newSViv (O_CREAT)); + newCONSTSUB (stash, "O_TRUNC", newSViv (O_TRUNC)); create_pipe (); pthread_atfork (atfork_prepare, atfork_parent, atfork_child); @@ -1428,6 +1431,25 @@ REQ_SEND; } + +void +aio_mknod (pathname,mode,dev,callback=&PL_sv_undef) + SV * pathname + SV * callback + UV mode + UV dev + PPCODE: +{ + dREQ; + + req->type = REQ_MKNOD; + req->data = newSVsv (pathname); + req->dataptr = SvPVbyte_nolen (req->data); + req->mode = (mode_t)mode; + req->offset = dev; + + REQ_SEND; +} void aio_busy (delay,callback=&PL_sv_undef)