Lines Matching defs:head

110 _lio_listio_cleanup(aio_lio_t *head)
114 ASSERT(MUTEX_HELD(&head->lio_mutex));
115 if (head->lio_refcnt == 0) {
116 ASSERT(head->lio_nent == 0);
119 head->lio_waiting = 0;
120 sig_mutex_unlock(&head->lio_mutex);
122 _aio_lio_free(head);
131 aio_lio_t *head = NULL;
199 * If LIO_WAIT, or notification required, allocate a list head.
206 head = _aio_lio_alloc();
207 if (head) {
208 sig_mutex_lock(&head->lio_mutex);
209 head->lio_mode = mode;
210 head->lio_largefile = 0;
213 head->lio_port = sigevp->sigev_signo;
214 head->lio_event = AIOLIO;
215 head->lio_sigevent = sigevp;
216 head->lio_sigval.sival_ptr =
221 head->lio_port = pn->portnfy_port;
222 head->lio_event = AIOLIO;
223 head->lio_sigevent = sigevp;
224 head->lio_sigval.sival_ptr =
227 head->lio_signo = sigevp->sigev_signo;
228 head->lio_sigval.sival_ptr =
232 head->lio_nent = head->lio_refcnt = nent;
233 sig_mutex_unlock(&head->lio_mutex);
243 if (head)
244 _lio_list_decr(head);
253 if (head)
254 _lio_list_decr(head);
269 error = _aio_rw(aiocbp, head, &__nextworker_rw, rw,
274 if (head)
275 _lio_list_decr(head);
292 if (head != NULL && head->lio_nent > 0) {
293 sig_mutex_lock(&head->lio_mutex);
294 while (head->lio_refcnt > 0) {
296 head->lio_waiting = 1;
297 pthread_cleanup_push(_lio_listio_cleanup, head);
298 err = sig_cond_wait(&head->lio_cond_cv,
299 &head->lio_mutex);
301 head->lio_waiting = 0;
302 if (err && head->lio_nent > 0) {
303 sig_mutex_unlock(&head->lio_mutex);
308 sig_mutex_unlock(&head->lio_mutex);
309 ASSERT(head->lio_nent == 0 && head->lio_refcnt == 0);
310 _aio_lio_free(head);
325 _lio_list_decr(aio_lio_t *head)
327 sig_mutex_lock(&head->lio_mutex);
328 head->lio_nent--;
329 head->lio_refcnt--;
330 sig_mutex_unlock(&head->lio_mutex);
736 aio_lio_t *head;
739 if ((head = reqp->req_head) != NULL) {
740 sig_mutex_lock(&head->lio_mutex);
741 ASSERT(head->lio_refcnt == head->lio_nent);
742 refcnt = --head->lio_nent;
743 head->lio_refcnt--;
744 sig_mutex_unlock(&head->lio_mutex);
746 _aio_lio_free(head);
755 __aio_fsync_bar(aiocb_t *aiocbp, aio_lio_t *head, aio_worker_t *aiowp,
763 error = _aio_rw(aiocbp, head, &next, AIOFSYNC, AIO_NO_KAIO);
765 sig_mutex_lock(&head->lio_mutex);
766 head->lio_mode = LIO_DESTROY; /* ignore fsync */
767 head->lio_nent -= workerscnt - i;
768 head->lio_refcnt -= workerscnt - i;
769 sig_mutex_unlock(&head->lio_mutex);
781 aio_lio_t *head;
835 head = _aio_lio_alloc();
836 if (head == NULL) {
840 head->lio_mode = LIO_FSYNC;
841 head->lio_nent = head->lio_refcnt = __rw_workerscnt;
842 head->lio_largefile = 0;
847 fret = __aio_fsync_bar(aiocbp, head, __workers_rw, __rw_workerscnt);
860 _aio_lio_free(head);
1333 aio_lio_t *head = NULL;
1401 * If LIO_WAIT, or notification required, allocate a list head.
1408 head = _aio_lio_alloc();
1409 if (head) {
1410 sig_mutex_lock(&head->lio_mutex);
1411 head->lio_mode = mode;
1412 head->lio_largefile = 1;
1415 head->lio_port = sigevp->sigev_signo;
1416 head->lio_event = AIOLIO64;
1417 head->lio_sigevent = sigevp;
1418 head->lio_sigval.sival_ptr =
1423 head->lio_port = pn->portnfy_port;
1424 head->lio_event = AIOLIO64;
1425 head->lio_sigevent = sigevp;
1426 head->lio_sigval.sival_ptr =
1429 head->lio_signo = sigevp->sigev_signo;
1430 head->lio_sigval.sival_ptr =
1434 head->lio_nent = head->lio_refcnt = nent;
1435 sig_mutex_unlock(&head->lio_mutex);
1445 if (head)
1446 _lio_list_decr(head);
1455 if (head)
1456 _lio_list_decr(head);
1471 error = _aio_rw64(aiocbp, head, &__nextworker_rw, rw,
1476 if (head)
1477 _lio_list_decr(head);
1494 if (head != NULL && head->lio_nent > 0) {
1495 sig_mutex_lock(&head->lio_mutex);
1496 while (head->lio_refcnt > 0) {
1498 head->lio_waiting = 1;
1499 pthread_cleanup_push(_lio_listio_cleanup, head);
1500 err = sig_cond_wait(&head->lio_cond_cv,
1501 &head->lio_mutex);
1503 head->lio_waiting = 0;
1504 if (err && head->lio_nent > 0) {
1505 sig_mutex_unlock(&head->lio_mutex);
1510 sig_mutex_unlock(&head->lio_mutex);
1511 ASSERT(head->lio_nent == 0 && head->lio_refcnt == 0);
1512 _aio_lio_free(head);
1631 __aio_fsync_bar64(aiocb64_t *aiocbp, aio_lio_t *head, aio_worker_t *aiowp,
1639 error = _aio_rw64(aiocbp, head, &next, AIOFSYNC, AIO_NO_KAIO);
1641 sig_mutex_lock(&head->lio_mutex);
1642 head->lio_mode = LIO_DESTROY; /* ignore fsync */
1643 head->lio_nent -= workerscnt - i;
1644 head->lio_refcnt -= workerscnt - i;
1645 sig_mutex_unlock(&head->lio_mutex);
1657 aio_lio_t *head;
1711 head = _aio_lio_alloc();
1712 if (head == NULL) {
1716 head->lio_mode = LIO_FSYNC;
1717 head->lio_nent = head->lio_refcnt = __rw_workerscnt;
1718 head->lio_largefile = 1;
1723 fret = __aio_fsync_bar64(aiocbp, head, __workers_rw, __rw_workerscnt);
1736 _aio_lio_free(head);