Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6: (75 commits) PM: merge device power-management source files sysfs: add copyrights kobject: update the copyrights kset: add some kerneldoc to help describe what these strange things are Driver core: rename ktype_edd and ktype_efivar Driver core: rename ktype_driver Driver core: rename ktype_device Driver core: rename ktype_class driver core: remove subsystem_init() sysfs: move sysfs file poll implementation to sysfs_open_dirent sysfs: implement sysfs_open_dirent sysfs: move sysfs_dirent->s_children into sysfs_dirent->s_dir sysfs: make sysfs_root a regular directory dirent sysfs: open code sysfs_attach_dentry() sysfs: make s_elem an anonymous union sysfs: make bin attr open get active reference of parent too sysfs: kill unnecessary NULL pointer check in sysfs_release() sysfs: kill unnecessary sysfs_get() in open paths sysfs: reposition sysfs_dirent->s_mode. sysfs: kill sysfs_update_file() ...
This commit is contained in:
@@ -49,6 +49,12 @@ struct dentry *debugfs_create_u32(const char *name, mode_t mode,
|
||||
struct dentry *parent, u32 *value);
|
||||
struct dentry *debugfs_create_u64(const char *name, mode_t mode,
|
||||
struct dentry *parent, u64 *value);
|
||||
struct dentry *debugfs_create_x8(const char *name, mode_t mode,
|
||||
struct dentry *parent, u8 *value);
|
||||
struct dentry *debugfs_create_x16(const char *name, mode_t mode,
|
||||
struct dentry *parent, u16 *value);
|
||||
struct dentry *debugfs_create_x32(const char *name, mode_t mode,
|
||||
struct dentry *parent, u32 *value);
|
||||
struct dentry *debugfs_create_bool(const char *name, mode_t mode,
|
||||
struct dentry *parent, u32 *value);
|
||||
|
||||
@@ -122,6 +128,27 @@ static inline struct dentry *debugfs_create_u64(const char *name, mode_t mode,
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct dentry *debugfs_create_x8(const char *name, mode_t mode,
|
||||
struct dentry *parent,
|
||||
u8 *value)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct dentry *debugfs_create_x16(const char *name, mode_t mode,
|
||||
struct dentry *parent,
|
||||
u16 *value)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct dentry *debugfs_create_x32(const char *name, mode_t mode,
|
||||
struct dentry *parent,
|
||||
u32 *value)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct dentry *debugfs_create_bool(const char *name, mode_t mode,
|
||||
struct dentry *parent,
|
||||
u32 *value)
|
||||
|
@@ -64,12 +64,9 @@ struct bus_type {
|
||||
struct bus_attribute * bus_attrs;
|
||||
struct device_attribute * dev_attrs;
|
||||
struct driver_attribute * drv_attrs;
|
||||
struct bus_attribute drivers_autoprobe_attr;
|
||||
struct bus_attribute drivers_probe_attr;
|
||||
|
||||
int (*match)(struct device * dev, struct device_driver * drv);
|
||||
int (*uevent)(struct device *dev, char **envp,
|
||||
int num_envp, char *buffer, int buffer_size);
|
||||
int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
|
||||
int (*probe)(struct device * dev);
|
||||
int (*remove)(struct device * dev);
|
||||
void (*shutdown)(struct device * dev);
|
||||
@@ -189,10 +186,8 @@ struct class {
|
||||
struct class_device_attribute * class_dev_attrs;
|
||||
struct device_attribute * dev_attrs;
|
||||
|
||||
int (*uevent)(struct class_device *dev, char **envp,
|
||||
int num_envp, char *buffer, int buffer_size);
|
||||
int (*dev_uevent)(struct device *dev, char **envp, int num_envp,
|
||||
char *buffer, int buffer_size);
|
||||
int (*uevent)(struct class_device *dev, struct kobj_uevent_env *env);
|
||||
int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env);
|
||||
|
||||
void (*release)(struct class_device *dev);
|
||||
void (*class_release)(struct class *class);
|
||||
@@ -268,8 +263,7 @@ struct class_device {
|
||||
struct attribute_group ** groups; /* optional groups */
|
||||
|
||||
void (*release)(struct class_device *dev);
|
||||
int (*uevent)(struct class_device *dev, char **envp,
|
||||
int num_envp, char *buffer, int buffer_size);
|
||||
int (*uevent)(struct class_device *dev, struct kobj_uevent_env *env);
|
||||
char class_id[BUS_ID_SIZE]; /* unique to this class */
|
||||
};
|
||||
|
||||
@@ -337,8 +331,7 @@ extern void class_device_destroy(struct class *cls, dev_t devt);
|
||||
struct device_type {
|
||||
const char *name;
|
||||
struct attribute_group **groups;
|
||||
int (*uevent)(struct device *dev, char **envp, int num_envp,
|
||||
char *buffer, int buffer_size);
|
||||
int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
|
||||
void (*release)(struct device *dev);
|
||||
int (*suspend)(struct device * dev, pm_message_t state);
|
||||
int (*resume)(struct device * dev);
|
||||
|
@@ -1,8 +1,10 @@
|
||||
/*
|
||||
* kobject.h - generic kernel object infrastructure.
|
||||
*
|
||||
* Copyright (c) 2002-2003 Patrick Mochel
|
||||
* Copyright (c) 2002-2003 Open Source Development Labs
|
||||
* Copyright (c) 2002-2003 Patrick Mochel
|
||||
* Copyright (c) 2002-2003 Open Source Development Labs
|
||||
* Copyright (c) 2006-2007 Greg Kroah-Hartman <greg@kroah.com>
|
||||
* Copyright (c) 2006-2007 Novell Inc.
|
||||
*
|
||||
* This file is released under the GPLv2.
|
||||
*
|
||||
@@ -29,6 +31,8 @@
|
||||
|
||||
#define KOBJ_NAME_LEN 20
|
||||
#define UEVENT_HELPER_PATH_LEN 256
|
||||
#define UEVENT_NUM_ENVP 32 /* number of env pointers */
|
||||
#define UEVENT_BUFFER_SIZE 2048 /* buffer for the variables */
|
||||
|
||||
/* path to the userspace helper executed on an event */
|
||||
extern char uevent_helper[];
|
||||
@@ -56,19 +60,14 @@ enum kobject_action {
|
||||
KOBJ_MAX
|
||||
};
|
||||
|
||||
/* The list of strings defining the valid kobject actions as specified above */
|
||||
extern const char *kobject_actions[];
|
||||
|
||||
struct kobject {
|
||||
const char * k_name;
|
||||
char name[KOBJ_NAME_LEN];
|
||||
struct kref kref;
|
||||
struct list_head entry;
|
||||
struct kobject * parent;
|
||||
struct kset * kset;
|
||||
struct kobj_type * ktype;
|
||||
struct sysfs_dirent * sd;
|
||||
wait_queue_head_t poll;
|
||||
};
|
||||
|
||||
extern int kobject_set_name(struct kobject *, const char *, ...)
|
||||
@@ -83,14 +82,9 @@ extern void kobject_init(struct kobject *);
|
||||
extern void kobject_cleanup(struct kobject *);
|
||||
|
||||
extern int __must_check kobject_add(struct kobject *);
|
||||
extern int __must_check kobject_shadow_add(struct kobject *kobj,
|
||||
struct sysfs_dirent *shadow_parent);
|
||||
extern void kobject_del(struct kobject *);
|
||||
|
||||
extern int __must_check kobject_rename(struct kobject *, const char *new_name);
|
||||
extern int __must_check kobject_shadow_rename(struct kobject *kobj,
|
||||
struct sysfs_dirent *new_parent,
|
||||
const char *new_name);
|
||||
extern int __must_check kobject_move(struct kobject *, struct kobject *);
|
||||
|
||||
extern int __must_check kobject_register(struct kobject *);
|
||||
@@ -111,36 +105,44 @@ struct kobj_type {
|
||||
struct attribute ** default_attrs;
|
||||
};
|
||||
|
||||
struct kobj_uevent_env {
|
||||
char *envp[UEVENT_NUM_ENVP];
|
||||
int envp_idx;
|
||||
char buf[UEVENT_BUFFER_SIZE];
|
||||
int buflen;
|
||||
};
|
||||
|
||||
struct kset_uevent_ops {
|
||||
int (*filter)(struct kset *kset, struct kobject *kobj);
|
||||
const char *(*name)(struct kset *kset, struct kobject *kobj);
|
||||
int (*uevent)(struct kset *kset, struct kobject *kobj, char **envp,
|
||||
int num_envp, char *buffer, int buffer_size);
|
||||
int (*uevent)(struct kset *kset, struct kobject *kobj,
|
||||
struct kobj_uevent_env *env);
|
||||
};
|
||||
|
||||
/*
|
||||
* struct kset - a set of kobjects of a specific type, belonging
|
||||
* to a specific subsystem.
|
||||
/**
|
||||
* struct kset - a set of kobjects of a specific type, belonging to a specific subsystem.
|
||||
*
|
||||
* All kobjects of a kset should be embedded in an identical
|
||||
* type. This type may have a descriptor, which the kset points
|
||||
* to. This allows there to exist sets of objects of the same
|
||||
* type in different subsystems.
|
||||
* A kset defines a group of kobjects. They can be individually
|
||||
* different "types" but overall these kobjects all want to be grouped
|
||||
* together and operated on in the same manner. ksets are used to
|
||||
* define the attribute callbacks and other common events that happen to
|
||||
* a kobject.
|
||||
*
|
||||
* A subsystem does not have to be a list of only one type
|
||||
* of object; multiple ksets can belong to one subsystem. All
|
||||
* ksets of a subsystem share the subsystem's lock.
|
||||
*
|
||||
* Each kset can support specific event variables; it can
|
||||
* supress the event generation or add subsystem specific
|
||||
* variables carried with the event.
|
||||
* @ktype: the struct kobj_type for this specific kset
|
||||
* @list: the list of all kobjects for this kset
|
||||
* @list_lock: a lock for iterating over the kobjects
|
||||
* @kobj: the embedded kobject for this kset (recursion, isn't it fun...)
|
||||
* @uevent_ops: the set of uevent operations for this kset. These are
|
||||
* called whenever a kobject has something happen to it so that the kset
|
||||
* can add new environment variables, or filter out the uevents if so
|
||||
* desired.
|
||||
*/
|
||||
struct kset {
|
||||
struct kobj_type * ktype;
|
||||
struct kobj_type *ktype;
|
||||
struct list_head list;
|
||||
spinlock_t list_lock;
|
||||
struct kobject kobj;
|
||||
struct kset_uevent_ops * uevent_ops;
|
||||
struct kset_uevent_ops *uevent_ops;
|
||||
};
|
||||
|
||||
|
||||
@@ -179,18 +181,18 @@ extern struct kobject * kset_find_obj(struct kset *, const char *);
|
||||
* Use this when initializing an embedded kset with no other
|
||||
* fields to initialize.
|
||||
*/
|
||||
#define set_kset_name(str) .kset = { .kobj = { .name = str } }
|
||||
#define set_kset_name(str) .kset = { .kobj = { .k_name = str } }
|
||||
|
||||
|
||||
#define decl_subsys(_name,_type,_uevent_ops) \
|
||||
struct kset _name##_subsys = { \
|
||||
.kobj = { .name = __stringify(_name) }, \
|
||||
.kobj = { .k_name = __stringify(_name) }, \
|
||||
.ktype = _type, \
|
||||
.uevent_ops =_uevent_ops, \
|
||||
}
|
||||
#define decl_subsys_name(_varname,_name,_type,_uevent_ops) \
|
||||
struct kset _varname##_subsys = { \
|
||||
.kobj = { .name = __stringify(_name) }, \
|
||||
.kobj = { .k_name = __stringify(_name) }, \
|
||||
.ktype = _type, \
|
||||
.uevent_ops =_uevent_ops, \
|
||||
}
|
||||
@@ -218,49 +220,9 @@ extern struct kset hypervisor_subsys;
|
||||
#define kobj_set_kset_s(obj,subsys) \
|
||||
(obj)->kobj.kset = &(subsys)
|
||||
|
||||
/**
|
||||
* kset_set_kset_s(obj,subsys) - set kset for embedded kset.
|
||||
* @obj: ptr to some object type.
|
||||
* @subsys: a subsystem object (not a ptr).
|
||||
*
|
||||
* Can be used for any object type with an embedded ->kset.
|
||||
* Sets the kset of @obj's embedded kobject (via its embedded
|
||||
* kset) to @subsys.kset. This makes @obj a member of that
|
||||
* kset.
|
||||
*/
|
||||
|
||||
#define kset_set_kset_s(obj,subsys) \
|
||||
(obj)->kset.kobj.kset = &(subsys)
|
||||
|
||||
/**
|
||||
* subsys_set_kset(obj,subsys) - set kset for subsystem
|
||||
* @obj: ptr to some object type.
|
||||
* @_subsys: a subsystem object (not a ptr).
|
||||
*
|
||||
* Can be used for any object type with an embedded ->subsys.
|
||||
* Sets the kset of @obj's kobject to @subsys.kset. This makes
|
||||
* the object a member of that kset.
|
||||
*/
|
||||
|
||||
#define subsys_set_kset(obj,_subsys) \
|
||||
(obj)->subsys.kobj.kset = &(_subsys)
|
||||
|
||||
extern void subsystem_init(struct kset *);
|
||||
extern int __must_check subsystem_register(struct kset *);
|
||||
extern void subsystem_unregister(struct kset *);
|
||||
|
||||
static inline struct kset *subsys_get(struct kset *s)
|
||||
{
|
||||
if (s)
|
||||
return kset_get(s);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void subsys_put(struct kset *s)
|
||||
{
|
||||
kset_put(s);
|
||||
}
|
||||
|
||||
struct subsys_attribute {
|
||||
struct attribute attr;
|
||||
ssize_t (*show)(struct kset *, char *);
|
||||
@@ -275,10 +237,11 @@ int kobject_uevent(struct kobject *kobj, enum kobject_action action);
|
||||
int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
|
||||
char *envp[]);
|
||||
|
||||
int add_uevent_var(char **envp, int num_envp, int *cur_index,
|
||||
char *buffer, int buffer_size, int *cur_len,
|
||||
const char *format, ...)
|
||||
__attribute__((format (printf, 7, 8)));
|
||||
int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...)
|
||||
__attribute__((format (printf, 2, 3)));
|
||||
|
||||
int kobject_action_type(const char *buf, size_t count,
|
||||
enum kobject_action *type);
|
||||
#else
|
||||
static inline int kobject_uevent(struct kobject *kobj, enum kobject_action action)
|
||||
{ return 0; }
|
||||
@@ -287,10 +250,12 @@ static inline int kobject_uevent_env(struct kobject *kobj,
|
||||
char *envp[])
|
||||
{ return 0; }
|
||||
|
||||
static inline int add_uevent_var(char **envp, int num_envp, int *cur_index,
|
||||
char *buffer, int buffer_size, int *cur_len,
|
||||
const char *format, ...)
|
||||
static inline int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...)
|
||||
{ return 0; }
|
||||
|
||||
static inline int kobject_action_type(const char *buf, size_t count,
|
||||
enum kobject_action *type)
|
||||
{ return -EINVAL; }
|
||||
#endif
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
@@ -15,7 +15,7 @@
|
||||
|
||||
struct platform_device {
|
||||
const char * name;
|
||||
u32 id;
|
||||
int id;
|
||||
struct device dev;
|
||||
u32 num_resources;
|
||||
struct resource * resource;
|
||||
@@ -35,9 +35,10 @@ extern struct resource *platform_get_resource_byname(struct platform_device *, u
|
||||
extern int platform_get_irq_byname(struct platform_device *, char *);
|
||||
extern int platform_add_devices(struct platform_device **, int);
|
||||
|
||||
extern struct platform_device *platform_device_register_simple(char *, unsigned int, struct resource *, unsigned int);
|
||||
extern struct platform_device *platform_device_register_simple(char *, int id,
|
||||
struct resource *, unsigned int);
|
||||
|
||||
extern struct platform_device *platform_device_alloc(const char *name, unsigned int id);
|
||||
extern struct platform_device *platform_device_alloc(const char *name, int id);
|
||||
extern int platform_device_add_resources(struct platform_device *pdev, struct resource *res, unsigned int num);
|
||||
extern int platform_device_add_data(struct platform_device *pdev, const void *data, size_t size);
|
||||
extern int platform_device_add(struct platform_device *pdev);
|
||||
|
@@ -3,6 +3,8 @@
|
||||
*
|
||||
* Copyright (c) 2001,2002 Patrick Mochel
|
||||
* Copyright (c) 2004 Silicon Graphics, Inc.
|
||||
* Copyright (c) 2007 SUSE Linux Products GmbH
|
||||
* Copyright (c) 2007 Tejun Heo <teheo@suse.de>
|
||||
*
|
||||
* Please see Documentation/filesystems/sysfs.txt for more information.
|
||||
*/
|
||||
@@ -17,23 +19,20 @@
|
||||
|
||||
struct kobject;
|
||||
struct module;
|
||||
struct nameidata;
|
||||
struct dentry;
|
||||
struct sysfs_dirent;
|
||||
|
||||
/* FIXME
|
||||
* The *owner field is no longer used, but leave around
|
||||
* until the tree gets cleaned up fully.
|
||||
*/
|
||||
struct attribute {
|
||||
const char * name;
|
||||
struct module * owner;
|
||||
const char *name;
|
||||
struct module *owner;
|
||||
mode_t mode;
|
||||
};
|
||||
|
||||
struct attribute_group {
|
||||
const char * name;
|
||||
struct attribute ** attrs;
|
||||
const char *name;
|
||||
struct attribute **attrs;
|
||||
};
|
||||
|
||||
|
||||
@@ -77,72 +76,41 @@ struct sysfs_ops {
|
||||
ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);
|
||||
};
|
||||
|
||||
#define SYSFS_TYPE_MASK 0x00ff
|
||||
#define SYSFS_ROOT 0x0001
|
||||
#define SYSFS_DIR 0x0002
|
||||
#define SYSFS_KOBJ_ATTR 0x0004
|
||||
#define SYSFS_KOBJ_BIN_ATTR 0x0008
|
||||
#define SYSFS_KOBJ_LINK 0x0020
|
||||
#define SYSFS_COPY_NAME (SYSFS_DIR | SYSFS_KOBJ_LINK)
|
||||
|
||||
#define SYSFS_FLAG_MASK ~SYSFS_TYPE_MASK
|
||||
#define SYSFS_FLAG_REMOVED 0x0100
|
||||
|
||||
#ifdef CONFIG_SYSFS
|
||||
|
||||
extern int sysfs_schedule_callback(struct kobject *kobj,
|
||||
void (*func)(void *), void *data, struct module *owner);
|
||||
int sysfs_schedule_callback(struct kobject *kobj, void (*func)(void *),
|
||||
void *data, struct module *owner);
|
||||
|
||||
extern int __must_check
|
||||
sysfs_create_dir(struct kobject *kobj, struct sysfs_dirent *shadow_parent_sd);
|
||||
int __must_check sysfs_create_dir(struct kobject *kobj);
|
||||
void sysfs_remove_dir(struct kobject *kobj);
|
||||
int __must_check sysfs_rename_dir(struct kobject *kobj, const char *new_name);
|
||||
int __must_check sysfs_move_dir(struct kobject *kobj,
|
||||
struct kobject *new_parent_kobj);
|
||||
|
||||
extern void
|
||||
sysfs_remove_dir(struct kobject *);
|
||||
|
||||
extern int __must_check
|
||||
sysfs_rename_dir(struct kobject *kobj, struct sysfs_dirent *new_parent_sd,
|
||||
const char *new_name);
|
||||
|
||||
extern int __must_check
|
||||
sysfs_move_dir(struct kobject *, struct kobject *);
|
||||
|
||||
extern int __must_check
|
||||
sysfs_create_file(struct kobject *, const struct attribute *);
|
||||
|
||||
extern int __must_check
|
||||
sysfs_update_file(struct kobject *, const struct attribute *);
|
||||
|
||||
extern int __must_check
|
||||
sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode);
|
||||
|
||||
extern void
|
||||
sysfs_remove_file(struct kobject *, const struct attribute *);
|
||||
|
||||
extern int __must_check
|
||||
sysfs_create_link(struct kobject * kobj, struct kobject * target, const char * name);
|
||||
|
||||
extern void
|
||||
sysfs_remove_link(struct kobject *, const char * name);
|
||||
int __must_check sysfs_create_file(struct kobject *kobj,
|
||||
const struct attribute *attr);
|
||||
int __must_check sysfs_chmod_file(struct kobject *kobj, struct attribute *attr,
|
||||
mode_t mode);
|
||||
void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr);
|
||||
|
||||
int __must_check sysfs_create_bin_file(struct kobject *kobj,
|
||||
struct bin_attribute *attr);
|
||||
struct bin_attribute *attr);
|
||||
void sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr);
|
||||
|
||||
int __must_check sysfs_create_group(struct kobject *,
|
||||
const struct attribute_group *);
|
||||
void sysfs_remove_group(struct kobject *, const struct attribute_group *);
|
||||
int __must_check sysfs_create_link(struct kobject *kobj, struct kobject *target,
|
||||
const char *name);
|
||||
void sysfs_remove_link(struct kobject *kobj, const char *name);
|
||||
|
||||
int __must_check sysfs_create_group(struct kobject *kobj,
|
||||
const struct attribute_group *grp);
|
||||
void sysfs_remove_group(struct kobject *kobj,
|
||||
const struct attribute_group *grp);
|
||||
int sysfs_add_file_to_group(struct kobject *kobj,
|
||||
const struct attribute *attr, const char *group);
|
||||
const struct attribute *attr, const char *group);
|
||||
void sysfs_remove_file_from_group(struct kobject *kobj,
|
||||
const struct attribute *attr, const char *group);
|
||||
const struct attribute *attr, const char *group);
|
||||
|
||||
void sysfs_notify(struct kobject * k, char *dir, char *attr);
|
||||
|
||||
|
||||
extern int sysfs_make_shadowed_dir(struct kobject *kobj,
|
||||
void * (*follow_link)(struct dentry *, struct nameidata *));
|
||||
extern struct sysfs_dirent *sysfs_create_shadow_dir(struct kobject *kobj);
|
||||
extern void sysfs_remove_shadow_dir(struct sysfs_dirent *shadow_sd);
|
||||
void sysfs_notify(struct kobject *kobj, char *dir, char *attr);
|
||||
|
||||
extern int __must_check sysfs_init(void);
|
||||
|
||||
@@ -154,75 +122,76 @@ static inline int sysfs_schedule_callback(struct kobject *kobj,
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static inline int sysfs_create_dir(struct kobject *kobj,
|
||||
struct sysfs_dirent *shadow_parent_sd)
|
||||
static inline int sysfs_create_dir(struct kobject *kobj)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void sysfs_remove_dir(struct kobject * k)
|
||||
static inline void sysfs_remove_dir(struct kobject *kobj)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
static inline int sysfs_rename_dir(struct kobject *kobj,
|
||||
struct sysfs_dirent *new_parent_sd,
|
||||
const char *new_name)
|
||||
static inline int sysfs_rename_dir(struct kobject *kobj, const char *new_name)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int sysfs_move_dir(struct kobject * k, struct kobject * new_parent)
|
||||
static inline int sysfs_move_dir(struct kobject *kobj,
|
||||
struct kobject *new_parent_kobj)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int sysfs_create_file(struct kobject * k, const struct attribute * a)
|
||||
static inline int sysfs_create_file(struct kobject *kobj,
|
||||
const struct attribute *attr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int sysfs_update_file(struct kobject * k, const struct attribute * a)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline int sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode)
|
||||
static inline int sysfs_chmod_file(struct kobject *kobj,
|
||||
struct attribute *attr, mode_t mode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void sysfs_remove_file(struct kobject * k, const struct attribute * a)
|
||||
static inline void sysfs_remove_file(struct kobject *kobj,
|
||||
const struct attribute *attr)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
static inline int sysfs_create_link(struct kobject * k, struct kobject * t, const char * n)
|
||||
static inline int sysfs_create_bin_file(struct kobject *kobj,
|
||||
struct bin_attribute *attr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void sysfs_remove_link(struct kobject * k, const char * name)
|
||||
static inline int sysfs_remove_bin_file(struct kobject *kobj,
|
||||
struct bin_attribute *attr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int sysfs_create_link(struct kobject *kobj,
|
||||
struct kobject *target, const char *name)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void sysfs_remove_link(struct kobject *kobj, const char *name)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
static inline int sysfs_create_bin_file(struct kobject * k, struct bin_attribute * a)
|
||||
static inline int sysfs_create_group(struct kobject *kobj,
|
||||
const struct attribute_group *grp)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int sysfs_remove_bin_file(struct kobject * k, struct bin_attribute * a)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int sysfs_create_group(struct kobject * k, const struct attribute_group *g)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void sysfs_remove_group(struct kobject * k, const struct attribute_group * g)
|
||||
static inline void sysfs_remove_group(struct kobject *kobj,
|
||||
const struct attribute_group *grp)
|
||||
{
|
||||
;
|
||||
}
|
||||
@@ -238,16 +207,10 @@ static inline void sysfs_remove_file_from_group(struct kobject *kobj,
|
||||
{
|
||||
}
|
||||
|
||||
static inline void sysfs_notify(struct kobject * k, char *dir, char *attr)
|
||||
static inline void sysfs_notify(struct kobject *kobj, char *dir, char *attr)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int sysfs_make_shadowed_dir(struct kobject *kobj,
|
||||
void * (*follow_link)(struct dentry *, struct nameidata *))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int __must_check sysfs_init(void)
|
||||
{
|
||||
return 0;
|
||||
|
@@ -21,7 +21,6 @@
|
||||
* (Note: the *_driver.minor_start values 1, 64, 128, 192 are
|
||||
* hardcoded at present.)
|
||||
*/
|
||||
#define NR_PTYS CONFIG_LEGACY_PTY_COUNT /* Number of legacy ptys */
|
||||
#define NR_UNIX98_PTY_DEFAULT 4096 /* Default maximum for Unix98 ptys */
|
||||
#define NR_UNIX98_PTY_MAX (1 << MINORBITS) /* Absolute limit */
|
||||
#define NR_LDISCS 17
|
||||
|
@@ -31,9 +31,9 @@ struct output_properties {
|
||||
struct output_device {
|
||||
int request_state;
|
||||
struct output_properties *props;
|
||||
struct class_device class_dev;
|
||||
struct device dev;
|
||||
};
|
||||
#define to_output_device(obj) container_of(obj, struct output_device, class_dev)
|
||||
#define to_output_device(obj) container_of(obj, struct output_device, dev)
|
||||
struct output_device *video_output_register(const char *name,
|
||||
struct device *dev,
|
||||
void *devdata,
|
||||
|
Reference in New Issue
Block a user