Lines Matching defs:tcd
49 struct tape_class_device * tcd;
53 tcd = kzalloc(sizeof(struct tape_class_device), GFP_KERNEL);
54 if (!tcd)
57 strscpy(tcd->device_name, device_name, TAPECLASS_NAME_LEN);
58 for (s = strchr(tcd->device_name, '/'); s; s = strchr(s, '/'))
60 strscpy(tcd->mode_name, mode_name, TAPECLASS_NAME_LEN);
61 for (s = strchr(tcd->mode_name, '/'); s; s = strchr(s, '/'))
64 tcd->char_device = cdev_alloc();
65 if (!tcd->char_device) {
70 tcd->char_device->owner = fops->owner;
71 tcd->char_device->ops = fops;
73 rc = cdev_add(tcd->char_device, dev, 1);
77 tcd->class_device = device_create(tape_class, device,
78 tcd->char_device->dev, NULL,
79 "%s", tcd->device_name);
80 rc = PTR_ERR_OR_ZERO(tcd->class_device);
85 &tcd->class_device->kobj,
86 tcd->mode_name
91 return tcd;
94 device_destroy(tape_class, tcd->char_device->dev);
97 cdev_del(tcd->char_device);
100 kfree(tcd);
106 void unregister_tape_dev(struct device *device, struct tape_class_device *tcd)
108 if (tcd != NULL && !IS_ERR(tcd)) {
109 sysfs_remove_link(&device->kobj, tcd->mode_name);
110 device_destroy(tape_class, tcd->char_device->dev);
111 cdev_del(tcd->char_device);
112 kfree(tcd);