Lines Matching refs:ldev
145 static void linux_cdev_deref(struct linux_cdev *ldev);
690 struct linux_cdev *ldev; in linux_get_fop() local
693 ldev = filp->f_cdev; in linux_get_fop()
695 if (ldev != NULL) { in linux_get_fop()
696 if (ldev->kobj.ktype == &linux_cdev_static_ktype) { in linux_get_fop()
697 refcount_acquire(&ldev->refs); in linux_get_fop()
699 for (siref = ldev->siref;;) { in linux_get_fop()
701 ldev = &dummy_ldev; in linux_get_fop()
702 *fop = ldev->ops; in linux_get_fop()
703 siref = ldev->siref; in linux_get_fop()
704 MPASS((ldev->siref & LDEV_SI_DTR) == 0); in linux_get_fop()
705 } else if (atomic_fcmpset_int(&ldev->siref, in linux_get_fop()
712 *dev = ldev; in linux_get_fop()
716 linux_drop_fop(struct linux_cdev *ldev) in linux_drop_fop() argument
719 if (ldev == NULL) in linux_drop_fop()
721 if (ldev->kobj.ktype == &linux_cdev_static_ktype) { in linux_drop_fop()
722 linux_cdev_deref(ldev); in linux_drop_fop()
724 MPASS(ldev->kobj.ktype == &linux_cdev_ktype); in linux_drop_fop()
725 MPASS((ldev->siref & ~LDEV_SI_DTR) != 0); in linux_drop_fop()
726 atomic_subtract_int(&ldev->siref, LDEV_SI_REF); in linux_drop_fop()
745 struct linux_cdev *ldev; in linux_dev_fdopen() local
750 ldev = dev->si_drv1; in linux_dev_fdopen()
754 filp->f_op = ldev->ops; in linux_dev_fdopen()
759 refcount_acquire(&ldev->refs); in linux_dev_fdopen()
760 filp->f_cdev = ldev; in linux_dev_fdopen()
763 linux_get_fop(filp, &fop, &ldev); in linux_dev_fdopen()
768 linux_drop_fop(ldev); in linux_dev_fdopen()
780 linux_drop_fop(ldev); in linux_dev_fdopen()
1133 struct linux_cdev *ldev; in linux_file_kqfilter_poll() local
1141 linux_get_fop(filp, &fop, &ldev); in linux_file_kqfilter_poll()
1144 linux_drop_fop(ldev); in linux_file_kqfilter_poll()
1375 struct linux_cdev *ldev; in linux_file_read() local
1388 linux_get_fop(filp, &fop, &ldev); in linux_file_read()
1406 linux_drop_fop(ldev); in linux_file_read()
1417 struct linux_cdev *ldev; in linux_file_write() local
1429 linux_get_fop(filp, &fop, &ldev); in linux_file_write()
1449 linux_drop_fop(ldev); in linux_file_write()
1460 struct linux_cdev *ldev; in linux_file_poll() local
1466 linux_get_fop(filp, &fop, &ldev); in linux_file_poll()
1473 linux_drop_fop(ldev); in linux_file_poll()
1483 struct linux_cdev *ldev; in linux_file_close() local
1498 linux_get_fop(filp, &fop, &ldev); in linux_file_close()
1509 linux_drop_fop(ldev); in linux_file_close()
1510 ldev = filp->f_cdev; in linux_file_close()
1511 if (ldev != NULL) in linux_file_close()
1512 linux_cdev_deref(ldev); in linux_file_close()
1525 struct linux_cdev *ldev; in linux_file_ioctl() local
1533 linux_get_fop(filp, &fop, &ldev); in linux_file_ioctl()
1577 linux_drop_fop(ldev); in linux_file_ioctl()
1607 struct linux_cdev *ldev; in linux_file_mmap() local
1654 linux_get_fop(filp, &fop, &ldev); in linux_file_mmap()
1665 linux_drop_fop(ldev); in linux_file_mmap()
1716 struct linux_cdev *ldev; in linux_iminor() local
1721 ldev = inode->v_rdev->si_drv1; in linux_iminor()
1722 if (ldev == NULL) in linux_iminor()
1725 return (minor(ldev->dev)); in linux_iminor()
2220 linux_cdev_deref(struct linux_cdev *ldev) in linux_cdev_deref() argument
2222 if (refcount_release(&ldev->refs) && in linux_cdev_deref()
2223 ldev->kobj.ktype == &linux_cdev_ktype) in linux_cdev_deref()
2224 kfree(ldev); in linux_cdev_deref()
2244 struct linux_cdev *ldev; in linux_cdev_static_release() local
2246 ldev = container_of(kobj, struct linux_cdev, kobj); in linux_cdev_static_release()
2247 cdev = ldev->cdev; in linux_cdev_static_release()
2250 ldev->cdev = NULL; in linux_cdev_static_release()
2256 linux_cdev_device_add(struct linux_cdev *ldev, struct device *dev) in linux_cdev_device_add() argument
2262 ldev->kobj.parent = &dev->kobj; in linux_cdev_device_add()
2269 if (ldev->kobj.name == NULL) in linux_cdev_device_add()
2272 ret = cdev_add(ldev, dev->devt, 1); in linux_cdev_device_add()
2278 cdev_del(ldev); in linux_cdev_device_add()
2283 linux_cdev_device_del(struct linux_cdev *ldev, struct device *dev) in linux_cdev_device_del() argument
2288 cdev_del(ldev); in linux_cdev_device_del()
2292 linux_destroy_dev(struct linux_cdev *ldev) in linux_destroy_dev() argument
2295 if (ldev->cdev == NULL) in linux_destroy_dev()
2298 MPASS((ldev->siref & LDEV_SI_DTR) == 0); in linux_destroy_dev()
2299 MPASS(ldev->kobj.ktype == &linux_cdev_ktype); in linux_destroy_dev()
2301 atomic_set_int(&ldev->siref, LDEV_SI_DTR); in linux_destroy_dev()
2302 while ((atomic_load_int(&ldev->siref) & ~LDEV_SI_DTR) != 0) in linux_destroy_dev()
2305 destroy_dev(ldev->cdev); in linux_destroy_dev()
2306 ldev->cdev = NULL; in linux_destroy_dev()
2506 struct linux_cdev *ldev = cdev->si_drv1; in linux_find_cdev() local
2507 if (ldev->dev == dev && in linux_find_cdev()
2508 strcmp(kobject_name(&ldev->kobj), name) == 0) { in linux_find_cdev()