Lines Matching defs:csp

151 #define	SN_HOLD(csp)	{ \
152 mutex_enter(&csp->s_lock); \
153 csp->s_count++; \
154 mutex_exit(&csp->s_lock); \
157 #define SN_RELE(csp) { \
158 mutex_enter(&csp->s_lock); \
159 csp->s_count--; \
160 ASSERT((csp->s_count > 0) || (csp->s_vnode->v_stream == NULL)); \
161 mutex_exit(&csp->s_lock); \
225 #define LOCK_CSP(csp) (void) spec_lockcsp(csp, 0, 1, 0)
226 #define LOCKHOLD_CSP_SIG(csp) spec_lockcsp(csp, 1, 1, 1)
227 #define SYNCHOLD_CSP_SIG(csp, intr) spec_lockcsp(csp, intr, 0, 1)
246 spec_lockcsp(struct snode *csp, int intr, int setlock, int hold)
249 mutex_enter(&csp->s_lock);
250 while (csp->s_flag & SLOCKED) {
251 csp->s_flag |= SWANT;
253 if (!cv_wait_sig(&csp->s_cv, &csp->s_lock)) {
254 if (csp->s_flag & SCLOSING)
258 mutex_exit(&csp->s_lock);
262 cv_wait(&csp->s_cv, &csp->s_lock);
266 csp->s_flag |= SLOCKED;
268 csp->s_count++; /* one more open reference : SN_HOLD */
269 mutex_exit(&csp->s_lock);
276 #define UNLOCK_CSP_LOCK_HELD(csp) \
277 ASSERT(mutex_owned(&csp->s_lock)); \
278 if (csp->s_flag & SWANT) \
279 cv_broadcast(&csp->s_cv); \
280 csp->s_flag &= ~(SWANT|SLOCKED);
282 #define UNLOCK_CSP(csp) \
283 mutex_enter(&csp->s_lock); \
284 UNLOCK_CSP_LOCK_HELD(csp); \
285 mutex_exit(&csp->s_lock);
290 #define SPEC_SIZE(csp) \
291 (((csp)->s_flag & SSIZEVALID) ? (csp)->s_size : spec_size(csp))
308 spec_size(struct snode *csp)
310 struct vnode *cvp = STOV(csp);
320 ASSERT((csp)->s_commonvp == cvp); /* must be common node */
323 mutex_enter(&csp->s_lock);
324 if (csp->s_flag & SSIZEVALID) {
325 mutex_exit(&csp->s_lock);
326 return (csp->s_size);
334 mutex_exit(&csp->s_lock);
340 csp->s_size = 0;
341 csp->s_flag |= SSIZEVALID;
342 mutex_exit(&csp->s_lock);
356 if (csp->s_count == 0) {
357 mutex_exit(&csp->s_lock);
362 if (((csp->s_flag & SDIPSET) == 0) || (csp->s_dip == NULL) ||
363 !i_ddi_devi_attached(csp->s_dip)) {
364 mutex_exit(&csp->s_lock);
368 devi = csp->s_dip;
436 csp->s_size = size;
437 csp->s_flag |= SSIZEVALID;
439 mutex_exit(&csp->s_lock);
564 struct snode *sp, *csp;
609 csp = VTOS(cvp);
610 if (!(csp->s_flag & SDIPSET)) {
626 dip = csp->s_dip;
669 while ((spec_locksp_ret = SYNCHOLD_CSP_SIG(csp, open_returns_eintr)) !=
689 csp = VTOS(sp->s_commonvp);
698 spec_type = (STOV(csp)->v_type == VCHR) ? S_IFCHR : S_IFBLK;
705 sp->s_size = SPEC_SIZE(csp);
707 if ((csp->s_flag & SNEEDCLOSE) == 0) {
709 mutex_enter(&csp->s_lock);
711 csp->s_flag |= SNEEDCLOSE;
718 if (((cvp->v_type == VCHR) && (csp->s_size == 0)) ||
720 (csp->s_size == UNKNOWN_SIZE)))
721 csp->s_flag &= ~SSIZEVALID;
724 csp->s_flag |= SLOFFSET;
726 csp->s_flag |= SLOFFSET | SANYOFFSET;
727 mutex_exit(&csp->s_lock);
739 mutex_enter(&csp->s_lock);
740 csp->s_count--; /* decrement open count : SN_RELE */
741 if ((csp->s_count == 0) && /* no outstanding open */
742 (csp->s_mapcnt == 0) && /* no mapping */
743 (csp->s_flag & SNEEDCLOSE)) { /* need a close */
744 csp->s_flag &= ~(SNEEDCLOSE | SSIZEVALID);
747 if (csp->s_flag & (SCLONE | SSELFCLONE))
748 csp->s_flag &= ~SDIPSET;
750 csp->s_flag |= SCLOSING;
751 mutex_exit(&csp->s_lock);
756 mutex_enter(&csp->s_lock);
757 csp->s_flag &= ~SCLOSING;
758 mutex_exit(&csp->s_lock);
760 mutex_exit(&csp->s_lock);
778 if (LOCKHOLD_CSP_SIG(csp) != SUCCESS)
787 UNLOCK_CSP(csp);
796 csp = VTOS(sp->s_commonvp);
799 UNLOCK_CSP(csp);
809 UNLOCK_CSP(csp);
817 sp->s_size = csp->s_size = 0;
850 UNLOCK_CSP(csp);
853 UNLOCK_CSP(csp);
854 SN_RELE(csp);
879 struct snode *sp, *csp;
909 csp = VTOS(cvp);
911 LOCK_CSP(csp);
912 mutex_enter(&csp->s_lock);
914 csp->s_count--; /* one fewer open reference : SN_RELE */
926 csp->s_flag &= ~SSIZEVALID;
933 if ((csp->s_count == 0) && (csp->s_mapcnt == 0)) {
935 csp->s_flag &= ~(SNEEDCLOSE | SSIZEVALID);
947 if (csp->s_flag & (SCLONE | SSELFCLONE))
948 csp->s_flag &= ~SDIPSET;
950 csp->s_flag |= SCLOSING;
951 mutex_exit(&csp->s_lock);
960 mutex_enter(&csp->s_lock);
961 csp->s_flag &= ~SCLOSING;
964 UNLOCK_CSP_LOCK_HELD(csp);
965 mutex_exit(&csp->s_lock);
1725 struct snode *csp;
1727 csp = VTOS(sp->s_commonvp);
1731 if (csp->s_mapcnt > 0)
2470 struct snode *csp = VTOS(vp);
2483 if (S_ISFENCED(csp))
2487 LOCK_CSP(csp);
2488 csp->s_mapcnt += npages;
2490 UNLOCK_CSP(csp);
2508 struct snode *csp = VTOS(vp);
2527 LOCK_CSP(csp);
2528 mutex_enter(&csp->s_lock);
2529 mcnt = (csp->s_mapcnt -= npages);
2538 if (csp->s_count == 0) {
2539 csp->s_flag &= ~(SNEEDCLOSE | SSIZEVALID);
2542 if (csp->s_flag & (SCLONE | SSELFCLONE))
2543 csp->s_flag &= ~SDIPSET;
2545 mutex_exit(&csp->s_lock);
2549 mutex_exit(&csp->s_lock);
2551 mutex_enter(&csp->s_lock);
2555 UNLOCK_CSP_LOCK_HELD(csp);
2556 mutex_exit(&csp->s_lock);