static void disk_release(struct kobject * kobj) { struct gendisk *disk = to_disk(kobj); kfree(disk->random); kfree(disk->part); free_disk_stats(disk); kfree(disk); }
/* * kobject & sysfs bindings for block devices */ static ssize_t disk_attr_show(struct kobject *kobj, struct attribute *attr, char *page) { struct gendisk *disk = to_disk(kobj); struct disk_attribute *disk_attr = container_of(attr,struct disk_attribute,attr); ssize_t ret = 0; if (disk_attr->show) ret = disk_attr->show(disk,page); return ret; }
static ssize_t disk_attr_store(struct kobject * kobj, struct attribute * attr, const char *page, size_t count) { struct gendisk *disk = to_disk(kobj); struct disk_attribute *disk_attr = container_of(attr,struct disk_attribute,attr); ssize_t ret = 0; if (disk_attr->store) ret = disk_attr->store(disk, page, count); return ret; }
/** * get_gendisk - get partitioning information for a given device * @dev: device to get partitioning information for * * This function gets the structure containing partitioning * information for the given device @dev. */ struct gendisk *get_gendisk(dev_t dev, int *part) { struct kobject *kobj = kobj_lookup(bdev_map, dev, part); return kobj ? to_disk(kobj) : NULL; }