Lines Matching refs:aiocbp

177 static boolean_t	is_already_queued(proc_t procp, user_addr_t aiocbp );
178 static boolean_t should_cancel(aio_workq_entry *entryp, user_addr_t aiocbp, int fd);
205 static int aio_queue_async_request(proc_t procp, user_addr_t aiocbp, int kindOfIO );
210 static int do_aio_cancel_locked(proc_t p, int fd, user_addr_t aiocbp, int wait_for_completion, boolean_t disable_notification );
218 user_addr_t aiocbp,
222 user_addr_t aiocbp,
498 * outstanding against file descriptor uap->fd. If uap->aiocbp is not
499 * NULL then only one specific IO is cancelled (if possible). If uap->aiocbp
510 (int)p, (int)uap->aiocbp, 0, 0, 0 );
520 if ( uap->aiocbp != USER_ADDR_NULL ) {
524 result = copyin( uap->aiocbp, &aiocb64, sizeof(aiocb64) );
531 result = copyin( uap->aiocbp, &aiocb32, sizeof(aiocb32) );
552 result = do_aio_cancel_locked( p, uap->fd, uap->aiocbp, 0, FALSE );
566 (int)p, (int)uap->aiocbp, result, 0, 0 );
627 * request referred to by uap->aiocbp. The error status is the errno
638 (int)p, (int)uap->aiocbp, 0, 0, 0 );
649 if ( entryp->uaiocbp == uap->aiocbp ) {
657 (int)p, (int)uap->aiocbp, *retval, 0, 0 );
664 if ( entryp->uaiocbp == uap->aiocbp ) {
669 (int)p, (int)uap->aiocbp, *retval, 0, 0 );
678 (int)p, (int)uap->aiocbp, error, 0, 0 );
688 * with the file indicated by the file descriptor (uap->aiocbp->aio_fildes) and
700 (int)p, (int)uap->aiocbp, uap->op, 0, 0 );
714 error = aio_queue_async_request( p, uap->aiocbp, fsync_kind );
720 (int)p, (int)uap->aiocbp, error, 0, 0 );
727 /* aio_read - asynchronously read uap->aiocbp->aio_nbytes bytes from the
728 * file descriptor (uap->aiocbp->aio_fildes) into the buffer
729 * (uap->aiocbp->aio_buf).
737 (int)p, (int)uap->aiocbp, 0, 0, 0 );
741 error = aio_queue_async_request( p, uap->aiocbp, AIO_READ );
746 (int)p, (int)uap->aiocbp, error, 0, 0 );
755 * request referred to by uap->aiocbp. The return status is the value
768 (int)p, (int)uap->aiocbp, 0, 0, 0 );
783 if ( entryp->uaiocbp == uap->aiocbp ) {
808 (int)p, (int)uap->aiocbp, *retval, 0, 0 );
816 if ( entryp->uaiocbp == uap->aiocbp ) {
819 (int)p, (int)uap->aiocbp, *retval, 0, 0 );
830 (int)p, (int)uap->aiocbp, error, 0, 0 );
953 should_cancel(aio_workq_entry *entryp, user_addr_t aiocbp, int fd)
955 if ( (aiocbp == USER_ADDR_NULL && fd == 0) ||
956 (aiocbp != USER_ADDR_NULL && entryp->uaiocbp == aiocbp) ||
957 (aiocbp == USER_ADDR_NULL && fd == entryp->aiocb.aio_fildes) ) {
968 * fd is 0 and aiocbp is NULL 2) cancel all async IOs for file descriptor - fd
969 * is > 0 and aiocbp is NULL 3) cancel one async IO associated with the given
970 * aiocbp.
975 * WARNING - do not deference aiocbp in this routine, it may point to user
981 do_aio_cancel_locked(proc_t p, int fd, user_addr_t aiocbp,
998 if (!should_cancel(entryp, aiocbp, fd)) {
1022 if ( aiocbp != USER_ADDR_NULL ) {
1051 if ( aiocbp != USER_ADDR_NULL ) {
1068 if (should_cancel(entryp, aiocbp, fd)) {
1073 if ( aiocbp != USER_ADDR_NULL ) {
1173 user_addr_t aiocbp;
1176 aiocbp = *(aiocbpp + i);
1177 if ( aiocbp == USER_ADDR_NULL )
1183 if ( entryp->uaiocbp == aiocbp ) {
1207 * same process we head back up to make sure this is for the correct aiocbp.
1208 * If it is the correct aiocbp we will return from where we do the check
1209 * (see entryp->uaiocbp == aiocbp after check_for_our_aiocbp label)
1235 /* aio_write - asynchronously write uap->aiocbp->aio_nbytes bytes to the
1236 * file descriptor (uap->aiocbp->aio_fildes) from the buffer
1237 * (uap->aiocbp->aio_buf).
1248 (int)p, (int)uap->aiocbp, 0, 0, 0 );
1250 error = aio_queue_async_request( p, uap->aiocbp, AIO_WRITE );
1255 (int)p, (int)uap->aiocbp, error, 0, 0 );
1852 aio_create_queue_entry(proc_t procp, user_addr_t aiocbp, void *group_tag, int kindOfIO)
1867 entryp->uaiocbp = aiocbp;
1876 result = copyin( aiocbp, &aiocb64, sizeof(aiocb64) );
1883 result = copyin( aiocbp, &aiocb32, sizeof(aiocb32) );
1917 aio_queue_async_request(proc_t procp, user_addr_t aiocbp, int kindOfIO )
1929 entryp = aio_create_queue_entry( procp, aiocbp, 0, kindOfIO);
1957 (int)procp, (int)aiocbp, 0, 0, 0 );
1984 * aiocbp The aio context buffer pointer
2006 lio_create_entry(proc_t procp, user_addr_t aiocbp, void *group_tag,
2012 entryp = aio_create_queue_entry( procp, aiocbp, group_tag, AIO_LIO);
2506 * aiocbp / process is there. Returns TRUE if there is a match
2513 user_addr_t aiocbp )
2522 if ( aiocbp == entryp->uaiocbp ) {
2530 if ( aiocbp == entryp->uaiocbp ) {