Lines Matching refs:aiop

198 	aio_t *aiop;
234 aiop = p->p_aio;
235 ASSERT(aiop != NULL);
237 mutex_enter(&aiop->aio_portq_mutex);
238 mutex_enter(&aiop->aio_mutex);
239 ASSERT(aiop->aio_pending > 0);
241 aiop->aio_pending--;
251 portevpend = --aiop->aio_portpendcnt;
252 aio_deq(&aiop->aio_portpending, reqp);
253 aio_enq(&aiop->aio_portq, reqp, 0);
254 mutex_exit(&aiop->aio_mutex);
255 mutex_exit(&aiop->aio_portq_mutex);
258 cv_broadcast(&aiop->aio_portcv);
262 if (aiop->aio_flags & AIO_CLEANUP) {
268 aio_deq(&aiop->aio_portpending, reqp);
269 aio_enq(&aiop->aio_portcleanupq, reqp, 0);
270 cv_signal(&aiop->aio_cleanupcv);
272 mutex_exit(&aiop->aio_mutex);
273 mutex_exit(&aiop->aio_portq_mutex);
277 aio_deq(&aiop->aio_portpending, reqp);
278 aio_enq(&aiop->aio_portq, reqp, 0);
288 cleanupqflag = (aiop->aio_flags & AIO_CLEANUP);
304 aio_enq(&aiop->aio_pollq, reqp, AIO_POLLQ);
306 aio_enq(&aiop->aio_notifyq, reqp, AIO_NOTIFYQ);
308 aio_enq(&aiop->aio_cleanupq, reqp,
312 cv_signal(&aiop->aio_cleanupcv);
314 mutex_exit(&aiop->aio_mutex);
315 mutex_exit(&aiop->aio_portq_mutex);
319 aiop->aio_flags |= AIO_DONE_ACTIVE;
320 mutex_exit(&aiop->aio_mutex);
321 mutex_exit(&aiop->aio_portq_mutex);
329 mutex_enter(&aiop->aio_mutex);
331 cv_broadcast(&aiop->aio_waitcv);
334 if (aiop->aio_flags & AIO_CLEANUP)
335 cv_signal(&aiop->aio_cleanupcv);
336 aiop->aio_flags &= ~AIO_DONE_ACTIVE;
337 mutex_exit(&aiop->aio_mutex);
350 aio_enq(&aiop->aio_doneq, reqp, AIO_DONEQ);
379 if (aiop->aio_flags & AIO_WAITN) {
380 if (aiop->aio_waitncnt > 0)
381 aiop->aio_waitncnt--;
382 if (aiop->aio_pending == 0 ||
383 aiop->aio_waitncnt == 0)
384 cv_broadcast(&aiop->aio_waitcv);
386 cv_broadcast(&aiop->aio_waitcv);
402 mutex_exit(&aiop->aio_mutex);
403 mutex_exit(&aiop->aio_portq_mutex);
504 aio_hash_delete(aio_t *aiop, struct aio_req_t *reqp)
512 nextp = (aiop->aio_hash + index);
526 aio_lio_free(aio_t *aiop, aio_lio_t *head)
528 ASSERT(MUTEX_HELD(&aiop->aio_mutex));
532 head->lio_next = aiop->aio_lio_free;
533 aiop->aio_lio_free = head;
540 aio_req_free(aio_t *aiop, aio_req_t *reqp)
544 ASSERT(MUTEX_HELD(&aiop->aio_mutex));
553 aio_lio_free(aiop, liop);
560 reqp->aio_req_next = aiop->aio_free;
562 aiop->aio_free = reqp;
563 aiop->aio_outstanding--;
564 if (aiop->aio_outstanding == 0)
565 cv_broadcast(&aiop->aio_waitcv);
566 aio_hash_delete(aiop, reqp);
573 aio_req_free_port(aio_t *aiop, aio_req_t *reqp)
575 ASSERT(MUTEX_HELD(&aiop->aio_mutex));
577 reqp->aio_req_next = aiop->aio_free;
579 aiop->aio_free = reqp;
580 aiop->aio_outstanding--;
581 aio_hash_delete(aiop, reqp);
665 aio_cleanupq_concat(aio_t *aiop, aio_req_t *q2, int qflg)
676 cleanupqhead = aiop->aio_cleanupq;
678 aiop->aio_cleanupq = q2;
694 aio_t *aiop = curproc->p_aio;
703 ASSERT(aiop != NULL);
714 mutex_enter(&aiop->aio_cleanupq_mutex);
719 mutex_enter(&aiop->aio_mutex);
720 if ((cleanupqhead = aiop->aio_cleanupq) != NULL) {
721 aiop->aio_cleanupq = NULL;
724 if ((notifyqhead = aiop->aio_notifyq) != NULL) {
725 aiop->aio_notifyq = NULL;
728 if ((pollqhead = aiop->aio_pollq) != NULL) {
729 aiop->aio_pollq = NULL;
733 if ((portq = aiop->aio_portq) != NULL)
736 if ((cleanupport = aiop->aio_portcleanupq) != NULL) {
737 aiop->aio_portcleanupq = NULL;
741 mutex_exit(&aiop->aio_mutex);
749 mutex_exit(&aiop->aio_cleanupq_mutex);
757 signalled = aio_cleanup_cleanupq(aiop, cleanupqhead, exitflg);
758 mutex_exit(&aiop->aio_cleanupq_mutex);
760 signalled = aio_cleanup_notifyq(aiop, notifyqhead, exitflg);
762 aio_cleanup_pollq(aiop, pollqhead, exitflg);
764 aio_cleanup_portq(aiop, cleanupport, exitflg);
778 mutex_enter(&aiop->aio_mutex);
783 if (!(aiop->aio_flags & AIO_SOLARIS_REQ))
785 cv_broadcast(&aiop->aio_waitcv);
786 mutex_exit(&aiop->aio_mutex);
803 aio_cleanup_portq(aio_t *aiop, aio_req_t *cleanupq, int exitflag)
811 if (exitflag || ((aiop->aio_flags & AIO_CLEANUP_PORT) == 0)) {
812 mutex_enter(&aiop->aio_mutex);
813 if (aiop->aio_flags & AIO_CLEANUP)
814 aiop->aio_flags |= AIO_CLEANUP_PORT;
815 mutex_exit(&aiop->aio_mutex);
821 * the portq list from the aiop for the duration of the
824 mutex_enter(&aiop->aio_portq_mutex);
825 headp = aiop->aio_portq;
826 aiop->aio_portq = NULL;
827 mutex_exit(&aiop->aio_portq_mutex);
833 mutex_enter(&aiop->aio_mutex);
834 aio_req_free(aiop, reqp);
835 mutex_exit(&aiop->aio_mutex);
844 mutex_enter(&aiop->aio_portq_mutex);
845 if ((newq = aiop->aio_portq) != NULL) {
854 aiop->aio_portq = headp;
855 cv_broadcast(&aiop->aio_portcv);
856 mutex_exit(&aiop->aio_portq_mutex);
867 mutex_enter(&aiop->aio_mutex);
868 aio_req_free(aiop, reqp);
869 mutex_exit(&aiop->aio_mutex);
871 mutex_enter(&aiop->aio_portq_mutex);
872 aio_enq(&aiop->aio_portq, reqp, 0);
873 mutex_exit(&aiop->aio_portq_mutex);
878 mutex_enter(&aiop->aio_mutex);
887 mutex_exit(&aiop->aio_mutex);
899 aio_cleanup_cleanupq(aio_t *aiop, aio_req_t *qhead, int exitflg)
904 ASSERT(MUTEX_HELD(&aiop->aio_cleanupq_mutex));
920 mutex_enter(&aiop->aio_mutex);
922 aio_req_free(aiop, reqp);
924 aio_enq(&aiop->aio_doneq, reqp, AIO_DONEQ);
931 mutex_exit(&aiop->aio_mutex);
940 aio_cleanup_notifyq(aio_t *aiop, aio_req_t *qhead, int exitflg)
954 mutex_enter(&aiop->aio_mutex);
955 aio_req_free(aiop, reqp);
956 mutex_exit(&aiop->aio_mutex);
958 mutex_enter(&aiop->aio_mutex);
959 aio_enq(&aiop->aio_doneq, reqp, AIO_DONEQ);
970 mutex_exit(&aiop->aio_mutex);
991 aio_cleanup_pollq(aio_t *aiop, aio_req_t *qhead, int exitflg)
1006 mutex_enter(&aiop->aio_mutex);
1007 aio_req_free(aiop, reqp);
1008 mutex_exit(&aiop->aio_mutex);
1011 mutex_enter(&aiop->aio_mutex);
1012 aio_enq(&aiop->aio_doneq, reqp, AIO_DONEQ);
1013 mutex_exit(&aiop->aio_mutex);
1026 aio_t *aiop = p->p_aio;
1035 mutex_enter(&aiop->aio_mutex);
1036 aiop->aio_flags |= AIO_CLEANUP;
1037 while ((aiop->aio_pending != 0) || (aiop->aio_flags & AIO_DONE_ACTIVE))
1038 cv_wait(&aiop->aio_cleanupcv, &aiop->aio_mutex);
1039 mutex_exit(&aiop->aio_mutex);
1054 if ((head = aiop->aio_doneq) != NULL) {
1055 aiop->aio_doneq = NULL;
1066 for (reqp = aiop->aio_free; reqp != NULL; reqp = next) {
1074 for (liop = aiop->aio_lio_free; liop != NULL; liop = nxtlio) {
1079 if (aiop->aio_iocb)
1080 kmem_free(aiop->aio_iocb, aiop->aio_iocbsz);
1082 mutex_destroy(&aiop->aio_mutex);
1083 mutex_destroy(&aiop->aio_portq_mutex);
1084 mutex_destroy(&aiop->aio_cleanupq_mutex);
1087 kmem_free(aiop, sizeof (struct aio));
1173 aio_req_remove_portq(aio_t *aiop, aio_req_t *reqp)
1175 ASSERT(MUTEX_HELD(&aiop->aio_portq_mutex));
1176 while (aiop->aio_portq == NULL) {
1185 cv_wait(&aiop->aio_portcv, &aiop->aio_portq_mutex);
1187 aio_deq(&aiop->aio_portq, reqp);
1194 aio_t *aiop;
1201 aiop = curproc->p_aio;
1203 aiop = (aio_t *)arg;
1209 * then the aiop pointer will still be set to NULL.
1211 if (aiop == NULL)
1224 mutex_enter(&aiop->aio_portq_mutex);
1225 mutex_enter(&aiop->aio_mutex);
1227 if ((headp = aiop->aio_portpending) != NULL) {
1239 mutex_exit(&aiop->aio_mutex);
1240 mutex_exit(&aiop->aio_portq_mutex);
1243 aiop->aio_portpendcnt += counter;
1244 mutex_exit(&aiop->aio_mutex);
1245 while (aiop->aio_portpendcnt)
1246 cv_wait(&aiop->aio_portcv, &aiop->aio_portq_mutex);
1253 if ((reqp = aiop->aio_portq) != NULL) {
1258 aio_req_remove_portq(aiop, reqp);
1264 } while ((reqp = next) != aiop->aio_portq);
1266 mutex_exit(&aiop->aio_portq_mutex);
1272 mutex_enter(&aiop->aio_mutex);
1273 aio_req_free_port(aiop, reqp);
1274 mutex_exit(&aiop->aio_mutex);
1277 if (aiop->aio_flags & AIO_CLEANUP)
1278 cv_broadcast(&aiop->aio_waitcv);
1292 struct aio *aiop = procp->p_aio;
1300 if (aiop != NULL) {
1301 aiop->aio_rqclnup = 1;