Lines Matching refs:ldev

129 static void linux_cdev_deref(struct linux_cdev *ldev);
849 struct linux_cdev *ldev; in linux_get_fop() local
852 ldev = filp->f_cdev; in linux_get_fop()
854 if (ldev != NULL) { in linux_get_fop()
855 if (ldev->kobj.ktype == &linux_cdev_static_ktype) { in linux_get_fop()
856 refcount_acquire(&ldev->refs); in linux_get_fop()
858 for (siref = ldev->siref;;) { in linux_get_fop()
860 ldev = &dummy_ldev; in linux_get_fop()
861 *fop = ldev->ops; in linux_get_fop()
862 siref = ldev->siref; in linux_get_fop()
863 MPASS((ldev->siref & LDEV_SI_DTR) == 0); in linux_get_fop()
864 } else if (atomic_fcmpset_int(&ldev->siref, in linux_get_fop()
871 *dev = ldev; in linux_get_fop()
875 linux_drop_fop(struct linux_cdev *ldev) in linux_drop_fop() argument
878 if (ldev == NULL) in linux_drop_fop()
880 if (ldev->kobj.ktype == &linux_cdev_static_ktype) { in linux_drop_fop()
881 linux_cdev_deref(ldev); in linux_drop_fop()
883 MPASS(ldev->kobj.ktype == &linux_cdev_ktype); in linux_drop_fop()
884 MPASS((ldev->siref & ~LDEV_SI_DTR) != 0); in linux_drop_fop()
885 atomic_subtract_int(&ldev->siref, LDEV_SI_REF); in linux_drop_fop()
904 struct linux_cdev *ldev; in linux_dev_fdopen() local
909 ldev = dev->si_drv1; in linux_dev_fdopen()
913 filp->f_op = ldev->ops; in linux_dev_fdopen()
918 refcount_acquire(&ldev->refs); in linux_dev_fdopen()
919 filp->f_cdev = ldev; in linux_dev_fdopen()
922 linux_get_fop(filp, &fop, &ldev); in linux_dev_fdopen()
927 linux_drop_fop(ldev); in linux_dev_fdopen()
939 linux_drop_fop(ldev); in linux_dev_fdopen()
1292 struct linux_cdev *ldev; in linux_file_kqfilter_poll() local
1300 linux_get_fop(filp, &fop, &ldev); in linux_file_kqfilter_poll()
1303 linux_drop_fop(ldev); in linux_file_kqfilter_poll()
1534 struct linux_cdev *ldev; in linux_file_read() local
1547 linux_get_fop(filp, &fop, &ldev); in linux_file_read()
1565 linux_drop_fop(ldev); in linux_file_read()
1576 struct linux_cdev *ldev; in linux_file_write() local
1588 linux_get_fop(filp, &fop, &ldev); in linux_file_write()
1608 linux_drop_fop(ldev); in linux_file_write()
1619 struct linux_cdev *ldev; in linux_file_poll() local
1625 linux_get_fop(filp, &fop, &ldev); in linux_file_poll()
1632 linux_drop_fop(ldev); in linux_file_poll()
1642 struct linux_cdev *ldev; in linux_file_close() local
1657 linux_get_fop(filp, &fop, &ldev); in linux_file_close()
1668 linux_drop_fop(ldev); in linux_file_close()
1669 ldev = filp->f_cdev; in linux_file_close()
1670 if (ldev != NULL) in linux_file_close()
1671 linux_cdev_deref(ldev); in linux_file_close()
1684 struct linux_cdev *ldev; in linux_file_ioctl() local
1692 linux_get_fop(filp, &fop, &ldev); in linux_file_ioctl()
1736 linux_drop_fop(ldev); in linux_file_ioctl()
1766 struct linux_cdev *ldev; in linux_file_mmap() local
1813 linux_get_fop(filp, &fop, &ldev); in linux_file_mmap()
1824 linux_drop_fop(ldev); in linux_file_mmap()
1876 struct linux_cdev *ldev; in linux_iminor() local
1881 ldev = inode->v_rdev->si_drv1; in linux_iminor()
1882 if (ldev == NULL) in linux_iminor()
1885 return (minor(ldev->dev)); in linux_iminor()
2347 linux_cdev_deref(struct linux_cdev *ldev) in linux_cdev_deref() argument
2349 if (refcount_release(&ldev->refs) && in linux_cdev_deref()
2350 ldev->kobj.ktype == &linux_cdev_ktype) in linux_cdev_deref()
2351 kfree(ldev); in linux_cdev_deref()
2371 struct linux_cdev *ldev; in linux_cdev_static_release() local
2373 ldev = container_of(kobj, struct linux_cdev, kobj); in linux_cdev_static_release()
2374 cdev = ldev->cdev; in linux_cdev_static_release()
2377 ldev->cdev = NULL; in linux_cdev_static_release()
2383 linux_cdev_device_add(struct linux_cdev *ldev, struct device *dev) in linux_cdev_device_add() argument
2389 ldev->kobj.parent = &dev->kobj; in linux_cdev_device_add()
2396 if (ldev->kobj.name == NULL) in linux_cdev_device_add()
2399 ret = cdev_add(ldev, dev->devt, 1); in linux_cdev_device_add()
2405 cdev_del(ldev); in linux_cdev_device_add()
2410 linux_cdev_device_del(struct linux_cdev *ldev, struct device *dev) in linux_cdev_device_del() argument
2415 cdev_del(ldev); in linux_cdev_device_del()
2419 linux_destroy_dev(struct linux_cdev *ldev) in linux_destroy_dev() argument
2422 if (ldev->cdev == NULL) in linux_destroy_dev()
2425 MPASS((ldev->siref & LDEV_SI_DTR) == 0); in linux_destroy_dev()
2426 MPASS(ldev->kobj.ktype == &linux_cdev_ktype); in linux_destroy_dev()
2428 atomic_set_int(&ldev->siref, LDEV_SI_DTR); in linux_destroy_dev()
2429 while ((atomic_load_int(&ldev->siref) & ~LDEV_SI_DTR) != 0) in linux_destroy_dev()
2432 destroy_dev(ldev->cdev); in linux_destroy_dev()
2433 ldev->cdev = NULL; in linux_destroy_dev()
2633 struct linux_cdev *ldev = cdev->si_drv1; in linux_find_cdev() local
2634 if (ldev->dev == dev && in linux_find_cdev()
2635 strcmp(kobject_name(&ldev->kobj), name) == 0) { in linux_find_cdev()