Lines Matching defs:ff
260 fdfile_t **ff = fd->fd_dt->dt_ff;
280 while (i > 0 && (ff[i] == NULL || !ff[i]->ff_allocated))
290 fdfile_t *ff;
292 ff = fdp->fd_dt->dt_ff[fd];
296 KASSERT(ff != NULL);
297 KASSERT(ff->ff_file == NULL);
298 KASSERT(!ff->ff_allocated);
300 ff->ff_allocated = true;
319 fdfile_t *ff;
321 ff = fdp->fd_dt->dt_ff[fd];
324 KASSERT(ff != NULL);
325 KASSERT(ff->ff_file == NULL);
326 KASSERT(ff->ff_allocated);
340 ff->ff_allocated = false;
357 fdfile_t *ff;
370 ff = dt->dt_ff[fd];
371 KASSERT(fd >= NDFDFILE || ff == (fdfile_t *)fdp->fd_dfdfile[fd]);
372 if (__predict_false(ff == NULL)) {
383 ff->ff_refcnt++;
393 * A. fd_close store ff->ff_file = NULL
394 * B. fd_close refcnt = atomic_dec_uint_nv(&ff->ff_refcnt)
395 * C. fd_getfile atomic_inc_uint(&ff->ff_refcnt)
396 * D. fd_getfile load fp = ff->ff_file
400 * 1. D: fp = ff->ff_file
401 * 2. A: ff->ff_file = NULL
402 * 3. B: refcnt = atomic_dec_uint_nv(&ff->ff_refcnt)
403 * 4. C: atomic_inc_uint(&ff->ff_refcnt)
425 atomic_inc_uint(&ff->ff_refcnt);
433 fp = atomic_load_consume(&ff->ff_file);
448 fdfile_t *ff;
453 ff = atomic_load_consume(&fdp->fd_dt)->dt_ff[fd];
455 KASSERT(ff != NULL);
456 KASSERT((ff->ff_refcnt & FR_MASK) > 0);
457 KASSERT(fd >= NDFDFILE || ff == (fdfile_t *)fdp->fd_dfdfile[fd]);
465 if (__predict_false((ff->ff_refcnt & FR_CLOSING) != 0)) {
469 ff->ff_refcnt--;
487 for (u = ff->ff_refcnt & FR_MASK;; u = v) {
488 v = atomic_cas_uint(&ff->ff_refcnt, u, u - 1);
570 fdfile_t *ff;
581 if ((ff = dt->dt_ff[fd]) == NULL) {
585 if ((fp = atomic_load_consume(&ff->ff_file)) == NULL) {
608 fdfile_t *ff;
617 ff = atomic_load_consume(&fdp->fd_dt)->dt_ff[fd];
619 KASSERT(fd >= NDFDFILE || ff == (fdfile_t *)fdp->fd_dfdfile[fd]);
622 KASSERT((ff->ff_refcnt & FR_MASK) > 0);
623 fp = atomic_load_consume(&ff->ff_file);
631 atomic_dec_uint(&ff->ff_refcnt);
632 cv_broadcast(&ff->ff_closing);
642 KASSERT((ff->ff_refcnt & FR_CLOSING) == 0);
650 atomic_store_relaxed(&ff->ff_file, NULL);
651 ff->ff_exclose = false;
662 refcnt = --(ff->ff_refcnt);
666 refcnt = atomic_dec_uint_nv(&ff->ff_refcnt);
677 atomic_or_uint(&ff->ff_refcnt, FR_CLOSING);
684 if (!SLIST_EMPTY(&ff->ff_knlist)) {
707 while ((ff->ff_refcnt & FR_MASK) != 0) {
708 cv_wait(&ff->ff_closing, &fdp->fd_lock);
710 atomic_and_uint(&ff->ff_refcnt, ~FR_CLOSING);
713 KASSERT(SLIST_EMPTY(&ff->ff_knlist));
771 fdfile_t *ff;
783 ff = kmem_alloc(sizeof(*ff), KM_SLEEP);
784 fdfile_ctor(ff);
809 dt->dt_ff[newfd] = ff;
810 ff = NULL;
819 if (ff != NULL) {
820 cv_destroy(&ff->ff_closing);
821 kmem_free(ff, sizeof(*ff));
1176 fdfile_t *ff;
1192 ff = dt->dt_ff[fd];
1194 KASSERT(ff != NULL);
1195 KASSERT(ff->ff_file == NULL);
1196 KASSERT(ff->ff_allocated);
1198 KASSERT(fd >= NDFDFILE || ff == (fdfile_t *)fdp->fd_dfdfile[fd]);
1201 atomic_store_release(&ff->ff_file, fp);
1211 fdfile_t *ff;
1216 ff = atomic_load_consume(&fdp->fd_dt)->dt_ff[fd];
1217 ff->ff_exclose = false;
1219 KASSERT(fd >= NDFDFILE || ff == (fdfile_t *)fdp->fd_dfdfile[fd]);
1277 fdfile_ctor(fdfile_t *ff)
1280 memset(ff, 0, sizeof(*ff));
1281 cv_init(&ff->ff_closing, "fdclose");
1285 fdfile_dtor(fdfile_t *ff)
1288 cv_destroy(&ff->ff_closing);
1422 fdfile_t *ff, **ffp, **nffp, *ff2;
1499 ff = *ffp;
1500 if (ff == NULL ||
1501 (fp = atomic_load_consume(&ff->ff_file)) == NULL) {
1527 ff2->ff_exclose = ff->ff_exclose;
1556 fdfile_t *ff;
1583 ff = dt->dt_ff[fd];
1585 ff == (fdfile_t *)fdp->fd_dfdfile[fd]);
1586 if (ff == NULL)
1588 if ((fp = atomic_load_consume(&ff->ff_file)) != NULL) {
1594 if (__predict_true(ff->ff_refcnt == 0) &&
1596 ff->ff_file = NULL;
1597 ff->ff_exclose = false;
1598 ff->ff_allocated = false;
1601 ff->ff_refcnt++;
1605 KASSERT(ff->ff_refcnt == 0);
1606 KASSERT(ff->ff_file == NULL);
1607 KASSERT(!ff->ff_exclose);
1608 KASSERT(!ff->ff_allocated);
1610 cv_destroy(&ff->ff_closing);
1611 kmem_free(ff, sizeof(*ff));
1706 fdfile_t *ff;
1716 ff = dt->dt_ff[old];
1739 error = fd_dup(fp, 0, newp, ff->ff_exclose);
1742 error = fd_dup(fp, 0, newp, ff->ff_exclose);
1765 fdfile_t *ff;
1787 if ((ff = dt->dt_ff[fd]) == NULL) {
1792 ff == (fdfile_t *)fdp->fd_dfdfile[fd]);
1793 if (ff->ff_file == NULL)
1795 if (ff->ff_exclose) {
1801 KASSERT((ff->ff_refcnt & FR_CLOSING) == 0);
1802 ff->ff_refcnt++;
1850 fdfile_t *ff = atomic_load_consume(&fdp->fd_dt)->dt_ff[fd];
1852 ff->ff_exclose = exclose;
2025 fdfile_t *ff;
2027 if ((ff = dt->dt_ff[i]) == NULL) {
2030 if ((fp = atomic_load_consume(&ff->ff_file)) == NULL) {
2127 fdfile_t *ff;
2129 if ((ff = dt->dt_ff[i]) == NULL) {
2132 if ((fp = atomic_load_consume(&ff->ff_file)) == NULL) {
2204 fdfile_t *ff;
2284 if ((ff = dt->dt_ff[i]) == NULL) {
2287 if ((fp = atomic_load_consume(&ff->ff_file)) ==
2298 fill_file2(&kf, fp, ff, i, p->p_pid);
2371 fill_file2(struct kinfo_file *kp, const file_t *fp, const fdfile_t *ff,
2405 if (ff != NULL) {
2408 kp->ki_ofileflags = ff->ff_exclose;
2409 kp->ki_usecount = ff->ff_refcnt;