ssize_t retval = 0;
kobj = file->f_dentry->d_parent->d_fsdata;
- if (kobj)
- ops = kobj->dir.ops;
-
+ if (kobj && kobj->subsys)
+ ops = kobj->subsys->sysfs_ops;
if (!ops || !ops->show)
return 0;
char * page;
kobj = file->f_dentry->d_parent->d_fsdata;
- if (kobj)
- ops = kobj->dir.ops;
+ if (kobj && kobj->subsys)
+ ops = kobj->subsys->sysfs_ops;
if (!ops || !ops->store)
return 0;
return -EINVAL;
if (kobj->parent)
- parent = kobj->parent->dir.dentry;
+ parent = kobj->parent->dentry;
else if (sysfs_mount && sysfs_mount->mnt_sb)
parent = sysfs_mount->mnt_sb->s_root;
else
dentry = get_dentry(parent,kobj->name);
if (!IS_ERR(dentry)) {
dentry->d_fsdata = (void *)kobj;
- kobj->dir.dentry = dentry;
+ kobj->dentry = dentry;
error = sysfs_mkdir(parent->d_inode,dentry,
(S_IFDIR| S_IRWXU | S_IRUGO | S_IXUGO));
} else
if (!kobj || !attr)
return -EINVAL;
- if (kobj->parent)
- parent = kobj->parent->dir.dentry;
- else
- return -ENOENT;
+ parent = kobj->dentry;
down(&parent->d_inode->i_sem);
dentry = get_dentry(parent,attr->name);
*/
int sysfs_create_link(struct kobject * kobj, struct kobject * target, char * name)
{
- struct dentry * dentry = kobj->dir.dentry;
+ struct dentry * dentry = kobj->dentry;
struct dentry * d;
int error = 0;
int size;
void sysfs_remove_file(struct kobject * kobj, struct attribute * attr)
{
- hash_and_remove(kobj->dir.dentry,attr->name);
+ hash_and_remove(kobj->dentry,attr->name);
}
void sysfs_remove_link(struct kobject * kobj, char * name)
{
- hash_and_remove(kobj->dir.dentry,name);
+ hash_and_remove(kobj->dentry,name);
}
void sysfs_remove_dir(struct kobject * kobj)
{
struct list_head * node, * next;
- struct dentry * dentry = kobj->dir.dentry;
+ struct dentry * dentry = kobj->dentry;
struct dentry * parent;
if (!dentry)