--- IO-AIO/AIO.xs 2015/06/25 18:08:47 1.237 +++ IO-AIO/AIO.xs 2016/05/01 17:19:39 1.241 @@ -987,7 +987,6 @@ const_iv (MAP_ANONYMOUS) /* linuxish */ - const_iv (MAP_HUGETLB) const_iv (MAP_LOCKED) const_iv (MAP_NORESERVE) const_iv (MAP_POPULATE) @@ -1299,6 +1298,46 @@ } void +aio_ioctl (SV *fh, unsigned long request, SV8 *arg, SV *callback = &PL_sv_undef) + ALIAS: + aio_ioctl = EIO_IOCTL + aio_fcntl = EIO_FCNTL + PPCODE: +{ + int fd = s_fileno_croak (fh, 0); + char *svptr; + + if (SvPOK (arg) || !SvNIOK (arg)) + { + STRLEN svlen; + /* perl uses IOCPARM_LEN for fcntl, so we do, too */ +#ifdef IOCPARM_LEN + STRLEN need = IOCPARM_LEN (request); +#else + STRLEN need = 256; +#endif + + if (svlen < need) + svptr = SvGROW (arg, need); + } + else + svptr = (char *)SvIV (arg); + + { + dREQ; + + req->type = ix; + req->sv1 = newSVsv (fh); + req->int1 = fd; + req->int2 = (long)request; + req->sv2 = SvREFCNT_inc (arg); + req->ptr2 = svptr; + + REQ_SEND; + } +} + +void aio_readlink (SV8 *pathname, SV *callback = &PL_sv_undef) ALIAS: aio_readlink = EIO_READLINK @@ -1368,7 +1407,7 @@ ALIAS: minor = 1 CODE: - RETVAL = ix ? major (dev) : minor (dev); + RETVAL = ix ? minor (dev) : major (dev); OUTPUT: RETVAL