Lines Matching defs:filp
400 struct linux_file *filp;
402 filp = kzalloc(sizeof(*filp), GFP_KERNEL);
405 filp->f_count = 1;
408 spin_lock_init(&filp->f_kqlock);
409 knlist_init(&filp->f_selinfo.si_note, &filp->f_kqlock,
412 return (filp);
416 linux_file_free(struct linux_file *filp)
418 if (filp->_file == NULL) {
419 if (filp->f_op != NULL && filp->f_op->release != NULL)
420 filp->f_op->release(filp->f_vnode, filp);
421 if (filp->f_shmem != NULL)
422 vm_object_deallocate(filp->f_shmem);
423 kfree_rcu(filp, rcu);
429 _fdrop(filp->_file, curthread);
686 linux_get_fop(struct linux_file *filp, const struct file_operations **fop,
692 ldev = filp->f_cdev;
693 *fop = filp->f_op;
745 struct linux_file *filp;
751 filp = linux_file_alloc();
752 filp->f_dentry = &filp->f_dentry_store;
753 filp->f_op = ldev->ops;
754 filp->f_mode = file->f_flag;
755 filp->f_flags = file->f_flag;
756 filp->f_vnode = file->f_vnode;
757 filp->_file = file;
759 filp->f_cdev = ldev;
762 linux_get_fop(filp, &fop, &ldev);
765 error = -fop->open(file->f_vnode, filp);
768 linux_cdev_deref(filp->f_cdev);
769 kfree(filp);
775 vref(filp->f_vnode);
778 finit(file, filp->f_mode, DTYPE_DEV, filp, &linuxfileops);
914 linux_file_ioctl_sub(struct file *fp, struct linux_file *filp,
942 error = -OPW(fp, td, fop->compat_ioctl(filp,
950 error = -OPW(fp, td, fop->unlocked_ioctl(filp,
957 error = -OPW(fp, td, fop->unlocked_ioctl(filp,
970 linux_file_kqfilter_poll(filp,
1006 struct linux_file *filp = container_of(wq, struct linux_file, f_wait_queue.wq);
1008 switch (linux_poll_wakeup_state(&filp->f_wait_queue.state, state)) {
1010 linux_poll_wakeup(filp);
1018 linux_poll_wait(struct linux_file *filp, wait_queue_head_t *wqh, poll_table *p)
1029 selrecord(curthread, &filp->f_selinfo);
1031 switch (linux_poll_wakeup_state(&filp->f_wait_queue.state, state)) {
1034 filp->f_wait_queue.wqh = wqh;
1035 filp->f_wait_queue.wq.func = &linux_poll_wakeup_callback;
1036 add_wait_queue(wqh, &filp->f_wait_queue.wq);
1037 atomic_set(&filp->f_wait_queue.state, LINUX_FWQ_STATE_QUEUED);
1045 linux_poll_wait_dequeue(struct linux_file *filp)
1054 seldrain(&filp->f_selinfo);
1056 switch (linux_poll_wakeup_state(&filp->f_wait_queue.state, state)) {
1060 remove_wait_queue(filp->f_wait_queue.wqh, &filp->f_wait_queue.wq);
1068 linux_poll_wakeup(struct linux_file *filp)
1071 if (filp == NULL)
1074 selwakeup(&filp->f_selinfo);
1076 spin_lock(&filp->f_kqlock);
1077 filp->f_kqflags |= LINUX_KQ_FLAG_NEED_READ |
1081 KNOTE_LOCKED(&filp->f_selinfo.si_note, 1);
1082 spin_unlock(&filp->f_kqlock);
1088 struct linux_file *filp = kn->kn_hook;
1090 spin_lock(&filp->f_kqlock);
1091 knlist_remove(&filp->f_selinfo.si_note, kn, 1);
1092 spin_unlock(&filp->f_kqlock);
1098 struct linux_file *filp = kn->kn_hook;
1100 mtx_assert(&filp->f_kqlock, MA_OWNED);
1102 return ((filp->f_kqflags & LINUX_KQ_FLAG_NEED_READ) ? 1 : 0);
1108 struct linux_file *filp = kn->kn_hook;
1110 mtx_assert(&filp->f_kqlock, MA_OWNED);
1112 return ((filp->f_kqflags & LINUX_KQ_FLAG_NEED_WRITE) ? 1 : 0);
1128 linux_file_kqfilter_poll(struct linux_file *filp, int kqflags)
1135 if ((filp->f_kqflags & kqflags) == 0)
1140 linux_get_fop(filp, &fop, &ldev);
1142 temp = OPW(filp->_file, td, fop->poll(filp, NULL));
1145 spin_lock(&filp->f_kqlock);
1147 filp->f_kqflags &= ~(LINUX_KQ_FLAG_NEED_READ |
1152 filp->f_kqflags |= LINUX_KQ_FLAG_NEED_READ;
1154 filp->f_kqflags |= LINUX_KQ_FLAG_NEED_WRITE;
1157 KNOTE_LOCKED(&filp->f_selinfo.si_note, 0);
1159 spin_unlock(&filp->f_kqlock);
1165 struct linux_file *filp;
1170 filp = (struct linux_file *)file->f_data;
1171 filp->f_flags = file->f_flag;
1172 if (filp->f_op->poll == NULL)
1175 spin_lock(&filp->f_kqlock);
1178 filp->f_kqflags |= LINUX_KQ_FLAG_HAS_READ;
1180 kn->kn_hook = filp;
1181 knlist_add(&filp->f_selinfo.si_note, kn, 1);
1185 filp->f_kqflags |= LINUX_KQ_FLAG_HAS_WRITE;
1187 kn->kn_hook = filp;
1188 knlist_add(&filp->f_selinfo.si_note, kn, 1);
1195 spin_unlock(&filp->f_kqlock);
1201 linux_file_kqfilter_poll(filp,
1215 struct linux_file *filp;
1219 filp = (struct linux_file *)fp->f_data;
1220 filp->f_flags = fp->f_flag;
1248 vmap->vm_file = get_file(filp);
1254 error = -OPW(fp, td, fop->mmap(filp, vmap));
1372 struct linux_file *filp;
1379 filp = (struct linux_file *)file->f_data;
1380 filp->f_flags = file->f_flag;
1387 linux_get_fop(filp, &fop, &ldev);
1389 bytes = OPW(file, td, fop->read(filp,
1404 linux_file_kqfilter_poll(filp, LINUX_KQ_FLAG_HAS_READ);
1414 struct linux_file *filp;
1420 filp = (struct linux_file *)file->f_data;
1421 filp->f_flags = file->f_flag;
1428 linux_get_fop(filp, &fop, &ldev);
1430 bytes = OPW(file, td, fop->write(filp,
1446 linux_file_kqfilter_poll(filp, LINUX_KQ_FLAG_HAS_WRITE);
1457 struct linux_file *filp;
1462 filp = (struct linux_file *)file->f_data;
1463 filp->f_flags = file->f_flag;
1465 linux_get_fop(filp, &fop, &ldev);
1467 revents = OPW(file, td, fop->poll(filp,
1479 struct linux_file *filp;
1485 filp = (struct linux_file *)file->f_data;
1487 KASSERT(file_count(filp) == 0,
1488 ("File refcount(%d) is not zero", file_count(filp)));
1494 filp->f_flags = file->f_flag;
1496 linux_poll_wait_dequeue(filp);
1497 linux_get_fop(filp, &fop, &ldev);
1502 release = filp->f_op->release;
1504 error = -OPW(file, td, release(filp->f_vnode, filp));
1505 funsetown(&filp->f_sigio);
1506 if (filp->f_vnode != NULL)
1507 vrele(filp->f_vnode);
1509 ldev = filp->f_cdev;
1513 kfree(filp);
1522 struct linux_file *filp;
1530 filp = (struct linux_file *)fp->f_data;
1531 filp->f_flags = fp->f_flag;
1532 linux_get_fop(filp, &fop, &ldev);
1541 error = -OPW(fp, td, fop->fasync(0, filp, fp->f_flag & FASYNC));
1544 error = fsetown(*(int *)data, &filp->f_sigio);
1548 error = -OPW(fp, td, fop->fasync(0, filp,
1553 *(int *)data = fgetown(&filp->f_sigio);
1559 if (filp->f_cdev == NULL || filp->f_cdev->cdev == NULL) {
1564 p = devtoname(filp->f_cdev->cdev);
1573 error = linux_file_ioctl_sub(fp, filp, fop, cmd, data, td);
1604 struct linux_file *filp;
1613 filp = (struct linux_file *)fp->f_data;
1615 vp = filp->f_vnode;
1653 linux_get_fop(filp, &fop, &ldev);
1671 struct linux_file *filp;
1675 filp = (struct linux_file *)fp->f_data;
1676 if (filp->f_vnode == NULL)
1679 vp = filp->f_vnode;
1692 struct linux_file *filp;
1696 filp = fp->f_data;
1697 vp = filp->f_vnode;