Lines Matching refs:sfs

114 sendfile_sync_destroy(struct sendfile_sync *sfs)  in sendfile_sync_destroy()  argument
116 KASSERT(sfs->count == 0, ("sendfile sync %p still busy", sfs)); in sendfile_sync_destroy()
118 cv_destroy(&sfs->cv); in sendfile_sync_destroy()
119 mtx_destroy(&sfs->mtx); in sendfile_sync_destroy()
120 free(sfs, M_SENDFILE); in sendfile_sync_destroy()
124 sendfile_sync_signal(struct sendfile_sync *sfs) in sendfile_sync_signal() argument
126 mtx_lock(&sfs->mtx); in sendfile_sync_signal()
127 KASSERT(sfs->count > 0, ("sendfile sync %p not busy", sfs)); in sendfile_sync_signal()
128 if (--sfs->count == 0) { in sendfile_sync_signal()
129 if (!sfs->waiting) { in sendfile_sync_signal()
131 sendfile_sync_destroy(sfs); in sendfile_sync_signal()
134 cv_signal(&sfs->cv); in sendfile_sync_signal()
137 mtx_unlock(&sfs->mtx); in sendfile_sync_signal()
184 struct sendfile_sync *sfs = m->m_ext.ext_arg2; in sendfile_free_mext() local
185 sendfile_sync_signal(sfs); in sendfile_free_mext()
209 struct sendfile_sync *sfs = m->m_ext.ext_arg1; in sendfile_free_mext_pg() local
210 sendfile_sync_signal(sfs); in sendfile_free_mext_pg()
766 struct sendfile_sync *sfs; in vn_sendfile() local
778 sfs = NULL; in vn_sendfile()
809 sfs = malloc(sizeof(*sfs), M_SENDFILE, M_WAITOK | M_ZERO); in vn_sendfile()
810 mtx_init(&sfs->mtx, "sendfile", NULL, MTX_DEF); in vn_sendfile()
811 cv_init(&sfs->cv, "sendfile"); in vn_sendfile()
812 sfs->waiting = true; in vn_sendfile()
1045 if (sfs != NULL) { in vn_sendfile()
1048 m0->m_ext.ext_arg1 = sfs; in vn_sendfile()
1049 mtx_lock(&sfs->mtx); in vn_sendfile()
1050 sfs->count++; in vn_sendfile()
1051 mtx_unlock(&sfs->mtx); in vn_sendfile()
1123 if (sfs != NULL) { in vn_sendfile()
1125 m0->m_ext.ext_arg2 = sfs; in vn_sendfile()
1126 mtx_lock(&sfs->mtx); in vn_sendfile()
1127 sfs->count++; in vn_sendfile()
1128 mtx_unlock(&sfs->mtx); in vn_sendfile()
1267 if (sfs != NULL) { in vn_sendfile()
1268 mtx_lock(&sfs->mtx); in vn_sendfile()
1269 if (sfs->count != 0) in vn_sendfile()
1270 error = cv_wait_sig(&sfs->cv, &sfs->mtx); in vn_sendfile()
1271 if (sfs->count == 0) { in vn_sendfile()
1272 sendfile_sync_destroy(sfs); in vn_sendfile()
1274 sfs->waiting = false; in vn_sendfile()
1275 mtx_unlock(&sfs->mtx); in vn_sendfile()