Lines Matching defs:iocb
53 typedef void (*aio_func)(union sigval val, struct aiocb *iocb);
55 extern int __sys_aio_read(struct aiocb *iocb);
56 extern int __sys_aio_write(struct aiocb *iocb);
58 extern int __sys_aio_return(struct aiocb *iocb);
59 extern int __sys_aio_error(struct aiocb *iocb);
60 extern int __sys_aio_fsync(int op, struct aiocb *iocb);
71 aio_sigev_alloc(struct aiocb *iocb, struct sigev_node **sn,
80 *sn = __sigev_alloc(SI_ASYNCIO, &iocb->aio_sigevent, NULL, 1);
86 *saved_ev = iocb->aio_sigevent;
87 (*sn)->sn_id = (sigev_id_t)iocb;
88 __sigev_get_sigevent(*sn, &iocb->aio_sigevent, (*sn)->sn_id);
99 aio_io(struct aiocb *iocb, int (*sysfunc)(struct aiocb *iocb))
105 if (iocb->aio_sigevent.sigev_notify != SIGEV_THREAD) {
106 ret = sysfunc(iocb);
110 ret = aio_sigev_alloc(iocb, &sn, &saved_ev);
113 ret = sysfunc(iocb);
114 iocb->aio_sigevent = saved_ev;
126 __aio_read(struct aiocb *iocb)
129 return aio_io(iocb, &__sys_aio_read);
133 __aio_write(struct aiocb *iocb)
136 return aio_io(iocb, &__sys_aio_write);
159 __aio_return(struct aiocb *iocb)
162 if (iocb->aio_sigevent.sigev_notify == SIGEV_THREAD) {
163 if (__sys_aio_error(iocb) == EINPROGRESS)
166 __sigev_delete(SI_ASYNCIO, (sigev_id_t)iocb);
170 return __sys_aio_return(iocb);
174 __aio_fsync(int op, struct aiocb *iocb)
180 if (iocb->aio_sigevent.sigev_notify != SIGEV_THREAD)
181 return __sys_aio_fsync(op, iocb);
183 ret = aio_sigev_alloc(iocb, &sn, &saved_ev);
186 ret = __sys_aio_fsync(op, iocb);
187 iocb->aio_sigevent = saved_ev;