Lines Matching refs:devcd

77 	struct devcd_entry *devcd = dev_to_devcd(dev);  in devcd_dev_release()  local
79 devcd->free(devcd->data); in devcd_dev_release()
80 module_put(devcd->owner); in devcd_dev_release()
86 if (devcd->failing_dev->kobj.sd) in devcd_dev_release()
87 sysfs_delete_link(&devcd->failing_dev->kobj, &dev->kobj, in devcd_dev_release()
90 put_device(devcd->failing_dev); in devcd_dev_release()
91 kfree(devcd); in devcd_dev_release()
94 static void __devcd_del(struct devcd_entry *devcd) in __devcd_del() argument
96 devcd->deleted = true; in __devcd_del()
97 device_del(&devcd->devcd_dev); in __devcd_del()
98 put_device(&devcd->devcd_dev); in __devcd_del()
103 struct devcd_entry *devcd; in devcd_del() local
106 devcd = container_of(wk, struct devcd_entry, del_wk.work); in devcd_del()
109 mutex_lock(&devcd->mutex); in devcd_del()
110 init_completed = devcd->init_completed; in devcd_del()
111 mutex_unlock(&devcd->mutex); in devcd_del()
114 __devcd_del(devcd); in devcd_del()
122 struct devcd_entry *devcd = dev_to_devcd(dev); in devcd_data_read() local
124 return devcd->read(buffer, offset, count, devcd->data, devcd->datalen); in devcd_data_read()
132 struct devcd_entry *devcd = dev_to_devcd(dev); in devcd_data_write() local
138 if (cancel_delayed_work(&devcd->del_wk)) in devcd_data_write()
139 schedule_delayed_work(&devcd->del_wk, 0); in devcd_data_write()
161 struct devcd_entry *devcd = dev_to_devcd(dev); in devcd_free() local
174 disable_delayed_work_sync(&devcd->del_wk); in devcd_free()
175 mutex_lock(&devcd->mutex); in devcd_free()
176 if (!devcd->deleted) in devcd_free()
177 __devcd_del(devcd); in devcd_free()
178 mutex_unlock(&devcd->mutex); in devcd_free()
274 struct devcd_entry *devcd = dev_to_devcd(dev); in devcd_match_failing() local
276 return devcd->failing_dev == failing; in devcd_match_failing()
368 struct devcd_entry *devcd; in dev_coredumpm_timeout() local
384 devcd = kzalloc_obj(*devcd, gfp); in dev_coredumpm_timeout()
385 if (!devcd) in dev_coredumpm_timeout()
388 devcd->owner = owner; in dev_coredumpm_timeout()
389 devcd->data = data; in dev_coredumpm_timeout()
390 devcd->datalen = datalen; in dev_coredumpm_timeout()
391 devcd->read = read; in dev_coredumpm_timeout()
392 devcd->free = free; in dev_coredumpm_timeout()
393 devcd->failing_dev = get_device(dev); in dev_coredumpm_timeout()
394 devcd->deleted = false; in dev_coredumpm_timeout()
396 mutex_init(&devcd->mutex); in dev_coredumpm_timeout()
397 device_initialize(&devcd->devcd_dev); in dev_coredumpm_timeout()
399 dev_set_name(&devcd->devcd_dev, "devcd%d", in dev_coredumpm_timeout()
401 devcd->devcd_dev.class = &devcd_class; in dev_coredumpm_timeout()
403 dev_set_uevent_suppress(&devcd->devcd_dev, true); in dev_coredumpm_timeout()
406 mutex_lock(&devcd->mutex); in dev_coredumpm_timeout()
407 devcd->init_completed = false; in dev_coredumpm_timeout()
408 INIT_DELAYED_WORK(&devcd->del_wk, devcd_del); in dev_coredumpm_timeout()
409 schedule_delayed_work(&devcd->del_wk, timeout); in dev_coredumpm_timeout()
411 if (device_add(&devcd->devcd_dev)) in dev_coredumpm_timeout()
419 if (sysfs_create_link(&devcd->devcd_dev.kobj, &dev->kobj, in dev_coredumpm_timeout()
421 sysfs_create_link(&dev->kobj, &devcd->devcd_dev.kobj, in dev_coredumpm_timeout()
425 dev_set_uevent_suppress(&devcd->devcd_dev, false); in dev_coredumpm_timeout()
426 kobject_uevent(&devcd->devcd_dev.kobj, KOBJ_ADD); in dev_coredumpm_timeout()
433 devcd->init_completed = true; in dev_coredumpm_timeout()
434 mutex_unlock(&devcd->mutex); in dev_coredumpm_timeout()
437 mutex_unlock(&devcd->mutex); in dev_coredumpm_timeout()
438 cancel_delayed_work_sync(&devcd->del_wk); in dev_coredumpm_timeout()
439 put_device(&devcd->devcd_dev); in dev_coredumpm_timeout()