⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 device.h

📁 Axis 221 camera embedded programing interface
💻 H
📖 第 1 页 / 共 2 页
字号:
	struct class_device_attribute uevent_attr;	struct device		* dev;		/* not necessary, but nice to have */	void			* class_data;	/* class-specific data */	struct class_device	*parent;	/* parent of this child device, if there is one */	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);	char	class_id[BUS_ID_SIZE];	/* unique to this class */};static inline void *class_get_devdata (struct class_device *dev){	return dev->class_data;}static inline voidclass_set_devdata (struct class_device *dev, void *data){	dev->class_data = data;}extern int __must_check class_device_register(struct class_device *);extern void class_device_unregister(struct class_device *);extern void class_device_initialize(struct class_device *);extern int __must_check class_device_add(struct class_device *);extern void class_device_del(struct class_device *);extern int class_device_rename(struct class_device *, char *);extern struct class_device * class_device_get(struct class_device *);extern void class_device_put(struct class_device *);extern void class_device_remove_file(struct class_device *, 				     const struct class_device_attribute *);extern int __must_check class_device_create_bin_file(struct class_device *,					struct bin_attribute *);extern void class_device_remove_bin_file(struct class_device *,					 struct bin_attribute *);struct class_interface {	struct list_head	node;	struct class		*class;	int (*add)	(struct class_device *, struct class_interface *);	void (*remove)	(struct class_device *, struct class_interface *);	int (*add_dev)		(struct device *, struct class_interface *);	void (*remove_dev)	(struct device *, struct class_interface *);};extern int __must_check class_interface_register(struct class_interface *);extern void class_interface_unregister(struct class_interface *);extern struct class *class_create(struct module *owner, const char *name);extern void class_destroy(struct class *cls);extern struct class_device *class_device_create(struct class *cls,						struct class_device *parent,						dev_t devt,						struct device *device,						const char *fmt, ...)					__attribute__((format(printf,5,6)));extern void class_device_destroy(struct class *cls, dev_t devt);/* interface for exporting device attributes */struct device_attribute {	struct attribute	attr;	ssize_t (*show)(struct device *dev, struct device_attribute *attr,			char *buf);	ssize_t (*store)(struct device *dev, struct device_attribute *attr,			 const char *buf, size_t count);};#define DEVICE_ATTR(_name,_mode,_show,_store) \struct device_attribute dev_attr_##_name = __ATTR(_name,_mode,_show,_store)extern int __must_check device_create_file(struct device *device,					struct device_attribute * entry);extern void device_remove_file(struct device * dev, struct device_attribute * attr);extern int __must_check device_create_bin_file(struct device *dev,					       struct bin_attribute *attr);extern void device_remove_bin_file(struct device *dev,				   struct bin_attribute *attr);struct device {	struct klist		klist_children;	struct klist_node	knode_parent;		/* node in sibling list */	struct klist_node	knode_driver;	struct klist_node	knode_bus;	struct device 	* parent;	struct kobject kobj;	char	bus_id[BUS_ID_SIZE];	/* position on parent bus */	unsigned		is_registered:1;	struct device_attribute uevent_attr;	struct device_attribute *devt_attr;	struct semaphore	sem;	/* semaphore to synchronize calls to					 * its driver.					 */	struct bus_type	* bus;		/* type of bus device is on */	struct device_driver *driver;	/* which driver has allocated this					   device */	void		*driver_data;	/* data private to the driver */	void		*platform_data;	/* Platform specific data, device					   core doesn't touch it */	struct dev_pm_info	power;#ifdef CONFIG_NUMA	int		numa_node;	/* NUMA node this device is close to */#endif	u64		*dma_mask;	/* dma mask (if dma'able device) */	u64		coherent_dma_mask;/* Like dma_mask, but for					     alloc_coherent mappings as					     not all hardware supports					     64 bit addresses for consistent					     allocations such descriptors. */	struct list_head	dma_pools;	/* dma pools (if dma'ble) */	struct dma_coherent_mem	*dma_mem; /* internal for coherent mem					     override */	/* arch specific additions */	struct dev_archdata	archdata;	/* class_device migration path */	struct list_head	node;	struct class		*class;		/* optional*/	dev_t			devt;		/* dev_t, creates the sysfs "dev" */	struct attribute_group	**groups;	/* optional groups */	void	(*release)(struct device * dev);};#ifdef CONFIG_NUMAstatic inline int dev_to_node(struct device *dev){	return dev->numa_node;}static inline void set_dev_node(struct device *dev, int node){	dev->numa_node = node;}#elsestatic inline int dev_to_node(struct device *dev){	return -1;}static inline void set_dev_node(struct device *dev, int node){}#endifstatic inline void *dev_get_drvdata (struct device *dev){	return dev->driver_data;}static inline voiddev_set_drvdata (struct device *dev, void *data){	dev->driver_data = data;}static inline int device_is_registered(struct device *dev){	return dev->is_registered;}void driver_init(void);/* * High level routines for use by the bus drivers */extern int __must_check device_register(struct device * dev);extern void device_unregister(struct device * dev);extern void device_initialize(struct device * dev);extern int __must_check device_add(struct device * dev);extern void device_del(struct device * dev);extern int device_for_each_child(struct device *, void *,		     int (*fn)(struct device *, void *));extern struct device *device_find_child(struct device *, void *data,					int (*match)(struct device *, void *));extern int device_rename(struct device *dev, char *new_name);extern int device_move(struct device *dev, struct device *new_parent);/* * Manual binding of a device to driver. See drivers/base/bus.c * for information on use. */extern int __must_check device_bind_driver(struct device *dev);extern void device_release_driver(struct device * dev);extern int  __must_check device_attach(struct device * dev);extern int __must_check driver_attach(struct device_driver *drv);extern int __must_check device_reprobe(struct device *dev);/* * Easy functions for dynamically creating devices on the fly */extern struct device *device_create(struct class *cls, struct device *parent,				    dev_t devt, const char *fmt, ...)				    __attribute__((format(printf,4,5)));extern void device_destroy(struct class *cls, dev_t devt);/* * Platform "fixup" functions - allow the platform to have their say * about devices and actions that the general device layer doesn't * know about. *//* Notify platform of device discovery */extern int (*platform_notify)(struct device * dev);extern int (*platform_notify_remove)(struct device * dev);/** * get_device - atomically increment the reference count for the device. * */extern struct device * get_device(struct device * dev);extern void put_device(struct device * dev);/* drivers/base/power/shutdown.c */extern void device_shutdown(void);/* drivers/base/firmware.c */extern int __must_check firmware_register(struct subsystem *);extern void firmware_unregister(struct subsystem *);/* debugging and troubleshooting/diagnostic helpers. */extern const char *dev_driver_string(struct device *dev);#define dev_printk(level, dev, format, arg...)	\	printk(level "%s %s: " format , dev_driver_string(dev) , (dev)->bus_id , ## arg)#ifdef DEBUG#define dev_dbg(dev, format, arg...)		\	dev_printk(KERN_DEBUG , dev , format , ## arg)#else#define dev_dbg(dev, format, arg...) do { (void)(dev); } while (0)#endif#define dev_err(dev, format, arg...)		\	dev_printk(KERN_ERR , dev , format , ## arg)#define dev_info(dev, format, arg...)		\	dev_printk(KERN_INFO , dev , format , ## arg)#define dev_warn(dev, format, arg...)		\	dev_printk(KERN_WARNING , dev , format , ## arg)#define dev_notice(dev, format, arg...)		\	dev_printk(KERN_NOTICE , dev , format , ## arg)/* Create alias, so I can be autoloaded. */#define MODULE_ALIAS_CHARDEV(major,minor) \	MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor))#define MODULE_ALIAS_CHARDEV_MAJOR(major) \	MODULE_ALIAS("char-major-" __stringify(major) "-*")#endif /* _DEVICE_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -