Lines Matching refs:job
102 static void soo_aio_cancel(struct kaiocb *job);
603 soaio_process_job(struct socket *so, struct sockbuf *sb, struct kaiocb *job) in soaio_process_job() argument
613 aio_switch_vmspace(job); in soaio_process_job()
615 fp = job->fd_file; in soaio_process_job()
618 td->td_ucred = job->cred; in soaio_process_job()
620 job_total_nbytes = job->uiop->uio_resid + job->aio_done; in soaio_process_job()
621 done = job->aio_done; in soaio_process_job()
622 cnt = job->uiop->uio_resid; in soaio_process_job()
623 job->uiop->uio_offset = 0; in soaio_process_job()
624 job->uiop->uio_td = td; in soaio_process_job()
640 error = soreceive(so, NULL, job->uiop, NULL, NULL, in soaio_process_job()
643 job->msgrcv = 1; in soaio_process_job()
652 error = sosend(so, NULL, job->uiop, NULL, NULL, flags, in soaio_process_job()
655 job->msgsnd = 1; in soaio_process_job()
657 PROC_LOCK(job->userproc); in soaio_process_job()
658 kern_psignal(job->userproc, SIGPIPE); in soaio_process_job()
659 PROC_UNLOCK(job->userproc); in soaio_process_job()
663 done += cnt - job->uiop->uio_resid; in soaio_process_job()
664 job->aio_done = done; in soaio_process_job()
687 if (!aio_set_cancel_function(job, soo_aio_cancel)) { in soaio_process_job()
690 aio_complete(job, done, 0); in soaio_process_job()
692 aio_cancel(job); in soaio_process_job()
695 TAILQ_INSERT_HEAD(&sb->sb_aiojobq, job, list); in soaio_process_job()
705 aio_complete(job, -1, error); in soaio_process_job()
707 aio_complete(job, done, 0); in soaio_process_job()
714 struct kaiocb *job; in soaio_process_sb() local
719 job = TAILQ_FIRST(&sb->sb_aiojobq); in soaio_process_sb()
720 TAILQ_REMOVE(&sb->sb_aiojobq, job, list); in soaio_process_sb()
721 if (!aio_clear_cancel_function(job)) in soaio_process_sb()
724 soaio_process_job(so, sb, job); in soaio_process_sb()
774 soo_aio_cancel(struct kaiocb *job) in soo_aio_cancel() argument
781 so = job->fd_file->f_data; in soo_aio_cancel()
782 opcode = job->uaiocb.aio_lio_opcode; in soo_aio_cancel()
791 if (!aio_cancel_cleared(job)) in soo_aio_cancel()
792 TAILQ_REMOVE(&sb->sb_aiojobq, job, list); in soo_aio_cancel()
797 done = job->aio_done; in soo_aio_cancel()
799 aio_complete(job, done, 0); in soo_aio_cancel()
801 aio_cancel(job); in soo_aio_cancel()
805 soo_aio_queue(struct file *fp, struct kaiocb *job) in soo_aio_queue() argument
812 error = (*so->so_proto->pr_usrreqs->pru_aio_queue)(so, job); in soo_aio_queue()
816 switch (job->uaiocb.aio_lio_opcode & (LIO_WRITE | LIO_READ)) { in soo_aio_queue()
828 if (!aio_set_cancel_function(job, soo_aio_cancel)) in soo_aio_queue()
830 TAILQ_INSERT_TAIL(&sb->sb_aiojobq, job, list); in soo_aio_queue()