亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? device.h

?? linux 內核源代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
/* * device.h - generic, centralized driver model * * Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org> * Copyright (c) 2004-2007 Greg Kroah-Hartman <gregkh@suse.de> * * This file is released under the GPLv2 * * See Documentation/driver-model/ for more information. */#ifndef _DEVICE_H_#define _DEVICE_H_#include <linux/ioport.h>#include <linux/kobject.h>#include <linux/klist.h>#include <linux/list.h>#include <linux/compiler.h>#include <linux/types.h>#include <linux/module.h>#include <linux/pm.h>#include <asm/semaphore.h>#include <asm/atomic.h>#include <asm/device.h>#define DEVICE_NAME_SIZE	50#define DEVICE_NAME_HALF	__stringify(20)	/* Less than half to accommodate slop */#define DEVICE_ID_SIZE		32#define BUS_ID_SIZE		KOBJ_NAME_LENstruct device;struct device_driver;struct class;struct class_device;struct bus_type;struct bus_attribute {	struct attribute	attr;	ssize_t (*show)(struct bus_type *, char * buf);	ssize_t (*store)(struct bus_type *, const char * buf, size_t count);};#define BUS_ATTR(_name,_mode,_show,_store)	\struct bus_attribute bus_attr_##_name = __ATTR(_name,_mode,_show,_store)extern int __must_check bus_create_file(struct bus_type *,					struct bus_attribute *);extern void bus_remove_file(struct bus_type *, struct bus_attribute *);struct bus_type {	const char		* name;	struct module		* owner;	struct kset		subsys;	struct kset		drivers;	struct kset		devices;	struct klist		klist_devices;	struct klist		klist_drivers;	struct blocking_notifier_head bus_notifier;	struct bus_attribute	* bus_attrs;	struct device_attribute	* dev_attrs;	struct driver_attribute	* drv_attrs;	int		(*match)(struct device * dev, struct device_driver * drv);	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);	int (*suspend)(struct device * dev, pm_message_t state);	int (*suspend_late)(struct device * dev, pm_message_t state);	int (*resume_early)(struct device * dev);	int (*resume)(struct device * dev);	unsigned int drivers_autoprobe:1;};extern int __must_check bus_register(struct bus_type * bus);extern void bus_unregister(struct bus_type * bus);extern int __must_check bus_rescan_devices(struct bus_type * bus);/* iterator helpers for buses */int bus_for_each_dev(struct bus_type * bus, struct device * start, void * data,		     int (*fn)(struct device *, void *));struct device * bus_find_device(struct bus_type *bus, struct device *start,				void *data, int (*match)(struct device *, void *));int __must_check bus_for_each_drv(struct bus_type *bus,		struct device_driver *start, void *data,		int (*fn)(struct device_driver *, void *));/* * Bus notifiers: Get notified of addition/removal of devices * and binding/unbinding of drivers to devices. * In the long run, it should be a replacement for the platform * notify hooks. */struct notifier_block;extern int bus_register_notifier(struct bus_type *bus,				 struct notifier_block *nb);extern int bus_unregister_notifier(struct bus_type *bus,				   struct notifier_block *nb);/* All 4 notifers below get called with the target struct device * * as an argument. Note that those functions are likely to be called * with the device semaphore held in the core, so be careful. */#define BUS_NOTIFY_ADD_DEVICE		0x00000001 /* device added */#define BUS_NOTIFY_DEL_DEVICE		0x00000002 /* device removed */#define BUS_NOTIFY_BOUND_DRIVER		0x00000003 /* driver bound to device */#define BUS_NOTIFY_UNBIND_DRIVER	0x00000004 /* driver about to be						      unbound */struct device_driver {	const char		* name;	struct bus_type		* bus;	struct kobject		kobj;	struct klist		klist_devices;	struct klist_node	knode_bus;	struct module		* owner;	const char 		* mod_name;	/* used for built-in modules */	struct module_kobject	* mkobj;	int	(*probe)	(struct device * dev);	int	(*remove)	(struct device * dev);	void	(*shutdown)	(struct device * dev);	int	(*suspend)	(struct device * dev, pm_message_t state);	int	(*resume)	(struct device * dev);};extern int __must_check driver_register(struct device_driver * drv);extern void driver_unregister(struct device_driver * drv);extern struct device_driver * get_driver(struct device_driver * drv);extern void put_driver(struct device_driver * drv);extern struct device_driver *driver_find(const char *name, struct bus_type *bus);extern int driver_probe_done(void);/* sysfs interface for exporting driver attributes */struct driver_attribute {	struct attribute	attr;	ssize_t (*show)(struct device_driver *, char * buf);	ssize_t (*store)(struct device_driver *, const char * buf, size_t count);};#define DRIVER_ATTR(_name,_mode,_show,_store)	\struct driver_attribute driver_attr_##_name = __ATTR(_name,_mode,_show,_store)extern int __must_check driver_create_file(struct device_driver *,					struct driver_attribute *);extern void driver_remove_file(struct device_driver *, struct driver_attribute *);extern int __must_check driver_for_each_device(struct device_driver * drv,		struct device *start, void *data,		int (*fn)(struct device *, void *));struct device * driver_find_device(struct device_driver *drv,				   struct device *start, void *data,				   int (*match)(struct device *, void *));/* * device classes */struct class {	const char		* name;	struct module		* owner;	struct kset		subsys;	struct list_head	children;	struct list_head	devices;	struct list_head	interfaces;	struct kset		class_dirs;	struct semaphore	sem;	/* locks both the children and interfaces lists */	struct class_attribute		* class_attrs;	struct class_device_attribute	* class_dev_attrs;	struct device_attribute		* dev_attrs;	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);	void	(*dev_release)(struct device *dev);	int	(*suspend)(struct device *, pm_message_t state);	int	(*resume)(struct device *);};extern int __must_check class_register(struct class *);extern void class_unregister(struct class *);struct class_attribute {	struct attribute	attr;	ssize_t (*show)(struct class *, char * buf);	ssize_t (*store)(struct class *, const char * buf, size_t count);};#define CLASS_ATTR(_name,_mode,_show,_store)			\struct class_attribute class_attr_##_name = __ATTR(_name,_mode,_show,_store) extern int __must_check class_create_file(struct class *,					const struct class_attribute *);extern void class_remove_file(struct class *, const struct class_attribute *);struct class_device_attribute {	struct attribute	attr;	ssize_t (*show)(struct class_device *, char * buf);	ssize_t (*store)(struct class_device *, const char * buf, size_t count);};#define CLASS_DEVICE_ATTR(_name,_mode,_show,_store)		\struct class_device_attribute class_device_attr_##_name = 	\	__ATTR(_name,_mode,_show,_store)extern int __must_check class_device_create_file(struct class_device *,				    const struct class_device_attribute *);/** * struct class_device - class devices * @class: pointer to the parent class for this class device.  This is required. * @devt: for internal use by the driver core only. * @node: for internal use by the driver core only. * @kobj: for internal use by the driver core only. * @groups: optional additional groups to be created * @dev: if set, a symlink to the struct device is created in the sysfs * directory for this struct class device. * @class_data: pointer to whatever you want to store here for this struct * class_device.  Use class_get_devdata() and class_set_devdata() to get and * set this pointer. * @parent: pointer to a struct class_device that is the parent of this struct * class_device.  If NULL, this class_device will show up at the root of the * struct class in sysfs (which is probably what you want to have happen.) * @release: pointer to a release function for this struct class_device.  If * set, this will be called instead of the class specific release function. * Only use this if you want to override the default release function, like * when you are nesting class_device structures. * @uevent: pointer to a uevent function for this struct class_device.  If * set, this will be called instead of the class specific uevent function. * Only use this if you want to override the default uevent function, like * when you are nesting class_device structures. */struct class_device {	struct list_head	node;	struct kobject		kobj;	struct class		* class;	/* required */	dev_t			devt;		/* dev_t, creates the sysfs "dev" */	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, struct kobj_uevent_env *env);	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 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 *);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色悠悠久久综合| 日韩午夜在线观看| 久久综合网色—综合色88| 麻豆精品在线播放| 26uuu色噜噜精品一区| 欧美一级二级三级蜜桃| 欧美精品视频www在线观看 | 日本韩国欧美在线| 五月婷婷久久综合| 精品久久久久久久久久久久久久久久久 | 久久精品视频网| 99久久精品一区| 亚洲大片一区二区三区| 国产日本欧美一区二区| 欧美调教femdomvk| 不卡一区在线观看| 日本va欧美va精品发布| 亚洲蜜臀av乱码久久精品| 91精品国产日韩91久久久久久| www.性欧美| 欧美最猛性xxxxx直播| 伊人色综合久久天天| 欧美成人精品3d动漫h| 精品国产伦一区二区三区免费 | 国产成人亚洲精品青草天美| 亚洲成人免费电影| 久久99久久久久| 26uuu国产一区二区三区| 久久嫩草精品久久久精品| 91精品国产色综合久久久蜜香臀| 精品国产伦一区二区三区观看体验 | 久久久美女毛片| 一区二区三区不卡视频在线观看| 精品福利av导航| 国产精品丝袜91| 久久亚洲欧美国产精品乐播| 中文字幕在线观看不卡视频| 国产三级欧美三级日产三级99 | 一区二区三区四区在线播放| 美女视频黄 久久| 色哟哟精品一区| 日韩免费视频一区二区| 日韩精品一区二区三区swag| 亚洲男帅同性gay1069| 蜜桃精品在线观看| 91久久精品国产91性色tv| 精品国产三级电影在线观看| 亚洲已满18点击进入久久| 亚洲一区二区五区| 国产东北露脸精品视频| 91精品国产综合久久精品性色| 欧美日本韩国一区二区三区视频| 欧美亚洲另类激情小说| 欧美激情综合网| 亚洲精品精品亚洲| 国产精品 日产精品 欧美精品| 欧美性生活大片视频| 亚洲欧美视频在线观看| 成人国产精品免费观看视频| 精品久久久久久久久久久久久久久 | 亚洲欧美电影一区二区| 国产一区二区三区黄视频| 国产精品一区二区三区99| 粉嫩av一区二区三区在线播放| 成人黄色在线看| 亚洲精品在线观看网站| 日本欧洲一区二区| 成人一区在线看| 欧美视频一区二区在线观看| 成人欧美一区二区三区小说| 国产成人综合精品三级| www激情久久| 久久99这里只有精品| 宅男噜噜噜66一区二区66| 午夜日韩在线电影| 欧美丰满美乳xxx高潮www| 午夜精品成人在线视频| 欧美日韩一区二区在线观看| 欧美xxxxx牲另类人与| 美女一区二区视频| 日韩欧美国产一二三区| 麻豆91精品视频| 精品久久久久久久久久久院品网| 久久电影国产免费久久电影 | 91国模大尺度私拍在线视频| 亚洲欧美一区二区三区孕妇| 一本久久综合亚洲鲁鲁五月天| 国产精品国产a| 精品一区二区精品| 国产亚洲欧洲997久久综合| 国产乱妇无码大片在线观看| 国产人妖乱国产精品人妖| 成人天堂资源www在线| 亚洲乱码国产乱码精品精小说| 91麻豆国产精品久久| 精品日韩在线一区| 风间由美一区二区av101| 亚洲日本在线看| 国产不卡在线视频| 国产精品欧美综合在线| 欧美视频三区在线播放| 美女一区二区视频| 国产精品你懂的在线| 欧美色视频在线观看| 美国一区二区三区在线播放| 中文字幕不卡在线| 欧美欧美午夜aⅴ在线观看| 国产一区在线看| 亚洲成人一区二区在线观看| 久久精品在线观看| 欧美性感一区二区三区| 国产suv精品一区二区三区| 亚洲午夜视频在线| 在线观看视频一区| 国内精品在线播放| 久久免费视频一区| 欧美色图12p| 成人v精品蜜桃久久一区| 日av在线不卡| 亚洲黄色小视频| 国产三级一区二区三区| 日韩三区在线观看| 欧美性大战久久久久久久| 国产伦精品一区二区三区免费| 亚洲高清久久久| 国产精品国产三级国产普通话三级 | 欧美国产乱子伦| 欧美成人一区二区三区片免费| 一本色道久久加勒比精品| 国产成人福利片| 久久精品噜噜噜成人av农村| 亚洲综合成人在线| 亚洲欧洲av一区二区三区久久| 欧美成人video| 欧美一区二区三区小说| 欧美日韩一区二区三区在线| 91丨国产丨九色丨pron| 成人免费毛片嘿嘿连载视频| 国产真实乱子伦精品视频| 日本欧美在线观看| 美腿丝袜亚洲三区| 免费欧美在线视频| 日日摸夜夜添夜夜添国产精品| 日韩欧美在线影院| 欧美日本在线播放| 欧美精品自拍偷拍动漫精品| 欧美午夜影院一区| 欧美日韩一级视频| 欧美色图第一页| 69av一区二区三区| 91精品综合久久久久久| 91精品国产91久久综合桃花| 欧美日韩一区 二区 三区 久久精品| 日本韩国视频一区二区| 欧美日韩亚洲综合在线| 欧美性欧美巨大黑白大战| 欧美喷潮久久久xxxxx| 欧美一区日韩一区| 精品国产91九色蝌蚪| 久久综合久色欧美综合狠狠| 久久精品免费在线观看| 国产精品人人做人人爽人人添| 国产精品国产三级国产aⅴ入口| 国产精品激情偷乱一区二区∴| 亚洲欧美偷拍另类a∨色屁股| 一区二区视频在线看| 亚洲高清视频中文字幕| 蜜桃一区二区三区在线观看| 国产精品小仙女| 91麻豆免费看| 欧美精品123区| 欧美国产欧美综合| 一区二区三区在线视频观看| 日本视频在线一区| 丁香六月综合激情| 欧美日韩高清一区二区| 欧美mv和日韩mv的网站| 国产精品丝袜在线| 香蕉加勒比综合久久 | 亚洲男人天堂av网| 日本91福利区| 93久久精品日日躁夜夜躁欧美| 欧美在线色视频| 26uuu久久综合| 艳妇臀荡乳欲伦亚洲一区| 美女视频黄频大全不卡视频在线播放 | 国产乱子伦视频一区二区三区| 99久久er热在这里只有精品15 | 国产大陆精品国产| 在线国产亚洲欧美| 久久一留热品黄| 亚洲一二三四在线观看| 国产毛片精品视频| 欧美午夜一区二区三区| 国产无一区二区| 婷婷综合五月天| 91美女片黄在线观看91美女| 久久天天做天天爱综合色| 亚洲图片欧美一区| www.日韩av|