Lines Matching defs:iw

43 static bool io_waitid_compat_copy_si(struct io_waitid *iw, int signo)
48 infop = (struct compat_siginfo __user *) iw->infop;
55 unsafe_put_user(iw->info.cause, &infop->si_code, Efault);
56 unsafe_put_user(iw->info.pid, &infop->si_pid, Efault);
57 unsafe_put_user(iw->info.uid, &infop->si_uid, Efault);
58 unsafe_put_user(iw->info.status, &infop->si_status, Efault);
70 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid);
73 if (!iw->infop)
77 return io_waitid_compat_copy_si(iw, signo);
79 if (!user_write_access_begin(iw->infop, sizeof(*iw->infop)))
82 unsafe_put_user(signo, &iw->infop->si_signo, Efault);
83 unsafe_put_user(0, &iw->infop->si_errno, Efault);
84 unsafe_put_user(iw->info.cause, &iw->infop->si_code, Efault);
85 unsafe_put_user(iw->info.pid, &iw->infop->si_pid, Efault);
86 unsafe_put_user(iw->info.uid, &iw->infop->si_uid, Efault);
87 unsafe_put_user(iw->info.status, &iw->infop->si_status, Efault);
114 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid);
117 WARN_ON_ONCE(!(atomic_read(&iw->refs) & IO_WAITID_REF_MASK));
131 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid);
138 atomic_or(IO_WAITID_CANCEL_FLAG, &iw->refs);
141 if (atomic_fetch_inc(&iw->refs) & IO_WAITID_REF_MASK)
144 spin_lock_irq(&iw->head->lock);
146 spin_unlock_irq(&iw->head->lock);
166 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid);
169 if (!atomic_sub_return(1, &iw->refs))
178 remove_wait_queue(iw->head, &iwa->wo.child_wait);
199 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid);
203 if (!(atomic_read(&iw->refs) & IO_WAITID_CANCEL_FLAG)) {
204 iw->head = &current->signal->wait_chldexit;
205 add_wait_queue(iw->head, &iwa->wo.child_wait);
213 remove_wait_queue(iw->head, &iwa->wo.child_wait);
227 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid);
234 if (atomic_fetch_inc(&iw->refs) & IO_WAITID_REF_MASK)
245 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid);
256 iw->which = READ_ONCE(sqe->len);
257 iw->upid = READ_ONCE(sqe->fd);
258 iw->options = READ_ONCE(sqe->file_index);
259 iw->infop = u64_to_user_ptr(READ_ONCE(sqe->addr2));
265 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid);
270 ret = kernel_waitid_prepare(&iwa->wo, iw->which, iw->upid, &iw->info,
271 iw->options, NULL);
280 atomic_set(&iw->refs, 1);
293 iw->head = &current->signal->wait_chldexit;
294 add_wait_queue(iw->head, &iwa->wo.child_wait);
316 remove_wait_queue(iw->head, &iwa->wo.child_wait);