Lines Matching refs:devcd

81 	struct devcd_entry *devcd = dev_to_devcd(dev);  in devcd_dev_release()  local
83 devcd->free(devcd->data); in devcd_dev_release()
84 module_put(devcd->owner); in devcd_dev_release()
90 if (devcd->failing_dev->kobj.sd) in devcd_dev_release()
91 sysfs_delete_link(&devcd->failing_dev->kobj, &dev->kobj, in devcd_dev_release()
94 put_device(devcd->failing_dev); in devcd_dev_release()
95 kfree(devcd); in devcd_dev_release()
100 struct devcd_entry *devcd; in devcd_del() local
102 devcd = container_of(wk, struct devcd_entry, del_wk.work); in devcd_del()
104 device_del(&devcd->devcd_dev); in devcd_del()
105 put_device(&devcd->devcd_dev); in devcd_del()
113 struct devcd_entry *devcd = dev_to_devcd(dev); in devcd_data_read() local
115 return devcd->read(buffer, offset, count, devcd->data, devcd->datalen); in devcd_data_read()
123 struct devcd_entry *devcd = dev_to_devcd(dev); in devcd_data_write() local
125 mutex_lock(&devcd->mutex); in devcd_data_write()
126 if (!devcd->delete_work) { in devcd_data_write()
127 devcd->delete_work = true; in devcd_data_write()
128 mod_delayed_work(system_wq, &devcd->del_wk, 0); in devcd_data_write()
130 mutex_unlock(&devcd->mutex); in devcd_data_write()
152 struct devcd_entry *devcd = dev_to_devcd(dev); in devcd_free() local
154 mutex_lock(&devcd->mutex); in devcd_free()
155 if (!devcd->delete_work) in devcd_free()
156 devcd->delete_work = true; in devcd_free()
158 flush_delayed_work(&devcd->del_wk); in devcd_free()
159 mutex_unlock(&devcd->mutex); in devcd_free()
257 struct devcd_entry *devcd = dev_to_devcd(dev); in devcd_match_failing() local
259 return devcd->failing_dev == failing; in devcd_match_failing()
351 struct devcd_entry *devcd; in dev_coredumpm_timeout() local
367 devcd = kzalloc(sizeof(*devcd), gfp); in dev_coredumpm_timeout()
368 if (!devcd) in dev_coredumpm_timeout()
371 devcd->owner = owner; in dev_coredumpm_timeout()
372 devcd->data = data; in dev_coredumpm_timeout()
373 devcd->datalen = datalen; in dev_coredumpm_timeout()
374 devcd->read = read; in dev_coredumpm_timeout()
375 devcd->free = free; in dev_coredumpm_timeout()
376 devcd->failing_dev = get_device(dev); in dev_coredumpm_timeout()
377 devcd->delete_work = false; in dev_coredumpm_timeout()
379 mutex_init(&devcd->mutex); in dev_coredumpm_timeout()
380 device_initialize(&devcd->devcd_dev); in dev_coredumpm_timeout()
382 dev_set_name(&devcd->devcd_dev, "devcd%d", in dev_coredumpm_timeout()
384 devcd->devcd_dev.class = &devcd_class; in dev_coredumpm_timeout()
386 mutex_lock(&devcd->mutex); in dev_coredumpm_timeout()
387 dev_set_uevent_suppress(&devcd->devcd_dev, true); in dev_coredumpm_timeout()
388 if (device_add(&devcd->devcd_dev)) in dev_coredumpm_timeout()
396 if (sysfs_create_link(&devcd->devcd_dev.kobj, &dev->kobj, in dev_coredumpm_timeout()
398 sysfs_create_link(&dev->kobj, &devcd->devcd_dev.kobj, in dev_coredumpm_timeout()
402 dev_set_uevent_suppress(&devcd->devcd_dev, false); in dev_coredumpm_timeout()
403 kobject_uevent(&devcd->devcd_dev.kobj, KOBJ_ADD); in dev_coredumpm_timeout()
404 INIT_DELAYED_WORK(&devcd->del_wk, devcd_del); in dev_coredumpm_timeout()
405 schedule_delayed_work(&devcd->del_wk, timeout); in dev_coredumpm_timeout()
406 mutex_unlock(&devcd->mutex); in dev_coredumpm_timeout()
409 put_device(&devcd->devcd_dev); in dev_coredumpm_timeout()
410 mutex_unlock(&devcd->mutex); in dev_coredumpm_timeout()