-#define to_elv(atr) container_of((atr), struct elv_fs_entry, attr)
-
-static ssize_t
-elv_attr_show(struct kobject *kobj, struct attribute *attr, char *page)
-{
- elevator_t *e = container_of(kobj, elevator_t, kobj);
- struct elv_fs_entry *entry = to_elv(attr);
- ssize_t error;
-
- if (!entry->show)
- return -EIO;
-
- mutex_lock(&e->sysfs_lock);
- error = e->ops ? entry->show(e, page) : -ENOENT;
- mutex_unlock(&e->sysfs_lock);
- return error;
-}
-
-static ssize_t
-elv_attr_store(struct kobject *kobj, struct attribute *attr,
- const char *page, size_t length)
-{
- elevator_t *e = container_of(kobj, elevator_t, kobj);
- struct elv_fs_entry *entry = to_elv(attr);
- ssize_t error;
-
- if (!entry->store)
- return -EIO;
-
- mutex_lock(&e->sysfs_lock);
- error = e->ops ? entry->store(e, page, length) : -ENOENT;
- mutex_unlock(&e->sysfs_lock);
- return error;
-}
-
-static struct sysfs_ops elv_sysfs_ops = {
- .show = elv_attr_show,
- .store = elv_attr_store,
-};
-
-static struct kobj_type elv_ktype = {
- .sysfs_ops = &elv_sysfs_ops,
- .release = elevator_release,
-};
-