Lines Matching defs:sq
692 syncq_t *sq, *outer;
698 * Perform the same operations as a leavesq(sq, SQ_OPENCLOSE)
705 sq = q->q_syncq;
706 ASSERT(sq);
707 is_sq_cioc = (sq->sq_type & SQ_CIOC) ? 1 : 0;
708 ASSERT(sq->sq_outer == NULL || sq->sq_outer->sq_flags & SQ_WRITER);
709 outer = sq->sq_outer;
717 mutex_enter(SQLOCK(sq));
719 SQ_PUTLOCKS_ENTER(sq);
721 flags = sq->sq_flags;
726 ASSERT(sq->sq_count > 0);
727 sq->sq_count--;
740 cv_broadcast(&sq->sq_wait);
743 sq->sq_flags = flags;
746 SQ_PUTLOCKS_EXIT(sq);
749 drain_syncq(sq);
750 ASSERT(MUTEX_NOT_HELD(SQLOCK(sq)));
751 entersq(sq, SQ_OPENCLOSE);
761 sq->sq_flags |= SQ_WANTEXWAKEUP;
763 SQ_PUTLOCKS_EXIT(sq);
765 ret = cv_wait_sig(&sq->sq_exitwait, SQLOCK(sq));
767 SQ_PUTLOCKS_ENTER(sq);
769 } while (ret && (sq->sq_flags & SQ_WANTEXWAKEUP));
771 SQ_PUTLOCKS_EXIT(sq);
773 mutex_exit(SQLOCK(sq));
778 entersq(sq, SQ_OPENCLOSE);
805 syncq_t *sq, *outer;
810 * Perform the same operations as a leavesq(sq, SQ_OPENCLOSE)
817 sq = q->q_syncq;
818 ASSERT(sq);
819 is_sq_cioc = (sq->sq_type & SQ_CIOC) ? 1 : 0;
820 ASSERT(sq->sq_outer == NULL || sq->sq_outer->sq_flags & SQ_WRITER);
821 outer = sq->sq_outer;
829 mutex_enter(SQLOCK(sq));
831 SQ_PUTLOCKS_ENTER(sq);
833 flags = sq->sq_flags;
838 ASSERT(sq->sq_count > 0);
839 sq->sq_count--;
852 cv_broadcast(&sq->sq_wait);
855 sq->sq_flags = flags;
858 SQ_PUTLOCKS_EXIT(sq);
861 drain_syncq(sq);
862 ASSERT(MUTEX_NOT_HELD(SQLOCK(sq)));
863 entersq(sq, SQ_OPENCLOSE);
873 sq->sq_flags |= SQ_WANTEXWAKEUP;
875 SQ_PUTLOCKS_EXIT(sq);
877 cv_wait(&sq->sq_exitwait, SQLOCK(sq));
879 SQ_PUTLOCKS_ENTER(sq);
881 } while (sq->sq_flags & SQ_WANTEXWAKEUP);
883 SQ_PUTLOCKS_EXIT(sq);
885 mutex_exit(SQLOCK(sq));
890 entersq(sq, SQ_OPENCLOSE);
907 syncq_t *sq;
912 * Perform the same operations as a leavesq(sq, SQ_PUT)
919 sq = q->q_syncq;
920 ASSERT(sq);
922 mutex_enter(SQLOCK(sq));
923 flags = sq->sq_flags;
928 ASSERT(sq->sq_count > 0);
929 sq->sq_count--;
930 if (!(sq->sq_type & SQ_CIPUT)) {
941 cv_broadcast(&sq->sq_wait);
944 sq->sq_flags = flags;
947 drain_syncq(sq);
948 ASSERT(MUTEX_NOT_HELD(SQLOCK(sq)));
949 entersq(sq, SQ_PUT);
959 sq->sq_flags |= SQ_WANTEXWAKEUP;
960 if (cv_wait_sig(&sq->sq_exitwait, SQLOCK(sq)) <= 0) {
961 sq->sq_flags &= ~SQ_WANTEXWAKEUP;
965 } while (sq->sq_flags & SQ_WANTEXWAKEUP);
966 mutex_exit(SQLOCK(sq));
971 entersq(sq, SQ_PUT);
996 syncq_t *sq;
1000 sq = q->q_syncq;
1003 * callbparams_alloc() acquires SQLOCK(sq)
1007 cbp = callbparams_alloc(sq, func, arg, KM_NOSLEEP | KM_PANIC);
1009 * the callbflags in the sq use the same flags. They get anded
1017 mutex_exit(SQLOCK(sq));
1025 syncq_t *sq;
1029 sq = q->q_syncq;
1032 * callbparams_alloc() acquires SQLOCK(sq) if successful.
1034 cbp = callbparams_alloc(sq, func, arg, KM_NOSLEEP);
1039 * the callbflags in the sq use the same flags. They get anded
1048 callbparams_free(sq, cbp);
1050 mutex_exit(SQLOCK(sq));
1061 * be cancelled before a close completes - so ensuring that the sq
1067 syncq_t *sq = q->q_syncq;
1070 mutex_enter(SQLOCK(sq));
1072 while (sq->sq_callbflags & SQ_CALLB_CANCEL_MASK) {
1073 sq->sq_flags |= SQ_WANTWAKEUP;
1074 cv_wait(&sq->sq_wait, SQLOCK(sq));
1076 sq->sq_cancelid = (callbparams_id_t)id;
1077 sq->sq_callbflags = SQ_CANCEL_TOUT;
1078 if (sq->sq_flags & SQ_WANTWAKEUP) {
1079 cv_broadcast(&sq->sq_wait);
1080 sq->sq_flags &= ~SQ_WANTWAKEUP;
1082 mutex_exit(SQLOCK(sq));
1084 mutex_enter(SQLOCK(sq));
1087 callbparams_free_id(sq, (callbparams_id_t)id, SQ_CANCEL_TOUT);
1089 if (sq->sq_callbflags & SQ_CALLB_BYPASSED) {
1092 sq->sq_callbflags = 0;
1093 if (sq->sq_flags & SQ_WANTWAKEUP) {
1094 cv_broadcast(&sq->sq_wait);
1095 sq->sq_flags &= ~SQ_WANTWAKEUP;
1097 mutex_exit(SQLOCK(sq));
1105 syncq_t *sq = q->q_syncq;
1107 mutex_enter(SQLOCK(sq));
1109 while (sq->sq_callbflags & SQ_CALLB_CANCEL_MASK) {
1110 sq->sq_flags |= SQ_WANTWAKEUP;
1111 cv_wait(&sq->sq_wait, SQLOCK(sq));
1113 sq->sq_cancelid = (callbparams_id_t)id;
1114 sq->sq_callbflags = SQ_CANCEL_BUFCALL;
1115 if (sq->sq_flags & SQ_WANTWAKEUP) {
1116 cv_broadcast(&sq->sq_wait);
1117 sq->sq_flags &= ~SQ_WANTWAKEUP;
1119 mutex_exit(SQLOCK(sq));
1121 mutex_enter(SQLOCK(sq));
1126 callbparams_free_id(sq, (callbparams_id_t)id, SQ_CANCEL_BUFCALL);
1127 sq->sq_callbflags = 0;
1128 if (sq->sq_flags & SQ_WANTWAKEUP) {
1129 cv_broadcast(&sq->sq_wait);
1130 sq->sq_flags &= ~SQ_WANTWAKEUP;
1132 mutex_exit(SQLOCK(sq));