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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rio-driver.c

?? linux 內(nèi)核源代碼
?? C
字號:
/* * RapidIO driver support * * Copyright 2005 MontaVista Software, Inc. * Matt Porter <mporter@kernel.crashing.org> * * This program is free software; you can redistribute  it and/or modify it * under  the terms of  the GNU General  Public License as published by the * Free Software Foundation;  either version 2 of the  License, or (at your * option) any later version. */#include <linux/init.h>#include <linux/module.h>#include <linux/rio.h>#include <linux/rio_ids.h>#include "rio.h"/** *  rio_match_device - Tell if a RIO device has a matching RIO device id structure *  @id: the RIO device id structure to match against *  @rdev: the RIO device structure to match against * *  Used from driver probe and bus matching to check whether a RIO device *  matches a device id structure provided by a RIO driver. Returns the *  matching &struct rio_device_id or %NULL if there is no match. */static const struct rio_device_id *rio_match_device(const struct rio_device_id						    *id,						    const struct rio_dev *rdev){	while (id->vid || id->asm_vid) {		if (((id->vid == RIO_ANY_ID) || (id->vid == rdev->vid)) &&		    ((id->did == RIO_ANY_ID) || (id->did == rdev->did)) &&		    ((id->asm_vid == RIO_ANY_ID)		     || (id->asm_vid == rdev->asm_vid))		    && ((id->asm_did == RIO_ANY_ID)			|| (id->asm_did == rdev->asm_did)))			return id;		id++;	}	return NULL;}/** * rio_dev_get - Increments the reference count of the RIO device structure * * @rdev: RIO device being referenced * * Each live reference to a device should be refcounted. * * Drivers for RIO devices should normally record such references in * their probe() methods, when they bind to a device, and release * them by calling rio_dev_put(), in their disconnect() methods. */struct rio_dev *rio_dev_get(struct rio_dev *rdev){	if (rdev)		get_device(&rdev->dev);	return rdev;}/** * rio_dev_put - Release a use of the RIO device structure * * @rdev: RIO device being disconnected * * Must be called when a user of a device is finished with it. * When the last user of the device calls this function, the * memory of the device is freed. */void rio_dev_put(struct rio_dev *rdev){	if (rdev)		put_device(&rdev->dev);}/** *  rio_device_probe - Tell if a RIO device structure has a matching RIO *                     device id structure *  @id: the RIO device id structure to match against *  @dev: the RIO device structure to match against * * return 0 and set rio_dev->driver when drv claims rio_dev, else error */static int rio_device_probe(struct device *dev){	struct rio_driver *rdrv = to_rio_driver(dev->driver);	struct rio_dev *rdev = to_rio_dev(dev);	int error = -ENODEV;	const struct rio_device_id *id;	if (!rdev->driver && rdrv->probe) {		if (!rdrv->id_table)			return error;		id = rio_match_device(rdrv->id_table, rdev);		rio_dev_get(rdev);		if (id)			error = rdrv->probe(rdev, id);		if (error >= 0) {			rdev->driver = rdrv;			error = 0;			rio_dev_put(rdev);		}	}	return error;}/** *  rio_device_remove - Remove a RIO device from the system * *  @dev: the RIO device structure to match against * * Remove a RIO device from the system. If it has an associated * driver, then run the driver remove() method.  Then update * the reference count. */static int rio_device_remove(struct device *dev){	struct rio_dev *rdev = to_rio_dev(dev);	struct rio_driver *rdrv = rdev->driver;	if (rdrv) {		if (rdrv->remove)			rdrv->remove(rdev);		rdev->driver = NULL;	}	rio_dev_put(rdev);	return 0;}/** *  rio_register_driver - register a new RIO driver *  @rdrv: the RIO driver structure to register * *  Adds a &struct rio_driver to the list of registered drivers *  Returns a negative value on error, otherwise 0. If no error *  occurred, the driver remains registered even if no device *  was claimed during registration. */int rio_register_driver(struct rio_driver *rdrv){	/* initialize common driver fields */	rdrv->driver.name = rdrv->name;	rdrv->driver.bus = &rio_bus_type;	/* register with core */	return driver_register(&rdrv->driver);}/** *  rio_unregister_driver - unregister a RIO driver *  @rdrv: the RIO driver structure to unregister * *  Deletes the &struct rio_driver from the list of registered RIO *  drivers, gives it a chance to clean up by calling its remove() *  function for each device it was responsible for, and marks those *  devices as driverless. */void rio_unregister_driver(struct rio_driver *rdrv){	driver_unregister(&rdrv->driver);}/** *  rio_match_bus - Tell if a RIO device structure has a matching RIO *                  driver device id structure *  @dev: the standard device structure to match against *  @drv: the standard driver structure containing the ids to match against * *  Used by a driver to check whether a RIO device present in the *  system is in its list of supported devices. Returns 1 if *  there is a matching &struct rio_device_id or 0 if there is *  no match. */static int rio_match_bus(struct device *dev, struct device_driver *drv){	struct rio_dev *rdev = to_rio_dev(dev);	struct rio_driver *rdrv = to_rio_driver(drv);	const struct rio_device_id *id = rdrv->id_table;	const struct rio_device_id *found_id;	if (!id)		goto out;	found_id = rio_match_device(id, rdev);	if (found_id)		return 1;      out:return 0;}static struct device rio_bus = {	.bus_id = "rapidio",};struct bus_type rio_bus_type = {	.name = "rapidio",	.match = rio_match_bus,	.dev_attrs = rio_dev_attrs,	.probe = rio_device_probe,	.remove = rio_device_remove,};/** *  rio_bus_init - Register the RapidIO bus with the device model * *  Registers the RIO bus device and RIO bus type with the Linux *  device model. */static int __init rio_bus_init(void){	if (device_register(&rio_bus) < 0)		printk("RIO: failed to register RIO bus device\n");	return bus_register(&rio_bus_type);}postcore_initcall(rio_bus_init);EXPORT_SYMBOL_GPL(rio_register_driver);EXPORT_SYMBOL_GPL(rio_unregister_driver);EXPORT_SYMBOL_GPL(rio_bus_type);EXPORT_SYMBOL_GPL(rio_dev_get);EXPORT_SYMBOL_GPL(rio_dev_put);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩激情在线观看| 欧美高清一级片在线| 91网站最新地址| 一本大道久久a久久精二百| 欧美日韩国产综合一区二区 | 国产一区二区三区日韩| 成人黄色综合网站| 91麻豆精品国产| 国产精品初高中害羞小美女文| 亚洲情趣在线观看| 国产在线精品免费| 91精品国产色综合久久久蜜香臀| 国产欧美一区二区精品性色超碰 | 91理论电影在线观看| 国产喂奶挤奶一区二区三区| 一区二区在线看| 99视频在线观看一区三区| 精品国产欧美一区二区| 午夜精品aaa| 欧美日韩视频不卡| 免费观看91视频大全| 欧美日韩免费观看一区三区| 一区二区三区四区不卡在线| 色欧美日韩亚洲| 亚洲一区在线观看免费| 在线影视一区二区三区| 一级日本不卡的影视| 欧美日韩国产小视频| 亚洲午夜在线电影| 色94色欧美sute亚洲线路二| 一区二区三区在线免费播放| 欧洲一区在线电影| 丝袜美腿亚洲一区| 欧美成人bangbros| 国产一区二区三区最好精华液| 5月丁香婷婷综合| 精品一区二区在线视频| 久久精品一区二区三区不卡牛牛| 成人福利视频在线看| 一区二区三区久久| 久久久91精品国产一区二区精品 | 国产精品亚洲第一区在线暖暖韩国| 日韩一区二区三区观看| 成人黄色国产精品网站大全在线免费观看| 一区二区三区中文字幕| 亚洲精品一线二线三线无人区| 色婷婷精品久久二区二区蜜臂av| 狠狠色丁香久久婷婷综合丁香| 亚洲第一av色| 一区二区三区.www| 伊人一区二区三区| 精品国产凹凸成av人网站| 欧美bbbbb| 69av一区二区三区| 国产精品白丝av| 一区二区成人在线| 亚洲精品一区二区三区精华液| 国产91高潮流白浆在线麻豆 | 国产九色sp调教91| **欧美大码日韩| 欧美一a一片一级一片| 美国av一区二区| 国产蜜臀97一区二区三区| 欧美日韩一区不卡| 国产成人鲁色资源国产91色综 | 国产精品久久久久久妇女6080| 一本大道久久精品懂色aⅴ| 日韩av在线播放中文字幕| 欧美电视剧免费观看| 欧美日韩综合色| 色噜噜久久综合| 99久久久久久| 成人手机在线视频| 久久综合九色综合97婷婷女人 | 欧美性欧美巨大黑白大战| 综合中文字幕亚洲| 国产日韩在线不卡| 久久亚洲精精品中文字幕早川悠里| 91精彩视频在线| 日本伦理一区二区| 日本韩国欧美一区| 欧美影院午夜播放| 这里是久久伊人| 欧美婷婷六月丁香综合色| 亚洲激情在线激情| 亚洲综合丁香婷婷六月香| 亚洲一卡二卡三卡四卡无卡久久 | 午夜国产精品影院在线观看| 一本到一区二区三区| 欧美精品自拍偷拍| 91精品国产免费| 中文字幕精品一区| 亚洲va中文字幕| 久久精品99国产国产精| av在线一区二区| 欧美精品三级在线观看| 久久精品视频一区二区| 日韩欧美一级片| 最近中文字幕一区二区三区| 亚洲日本青草视频在线怡红院| 亚洲成人自拍偷拍| 亚洲综合精品自拍| 国产乱人伦精品一区二区在线观看 | 麻豆中文一区二区| 成人国产亚洲欧美成人综合网| av在线不卡电影| 久久伊人中文字幕| 亚洲国产精品av| 色噜噜狠狠色综合欧洲selulu| 欧美一区二区三区视频在线观看| 欧美激情一区二区在线| 国模冰冰炮一区二区| 欧美日韩第一区日日骚| 成人欧美一区二区三区在线播放| 蜜臀av在线播放一区二区三区| 91久久精品一区二区三| 亚洲大片免费看| 欧美一区二区视频免费观看| 久久―日本道色综合久久| 色8久久人人97超碰香蕉987| 国产欧美va欧美不卡在线| 国内一区二区视频| 欧美国产禁国产网站cc| 成人av资源网站| 在线免费精品视频| 一区二区三区蜜桃| 日韩女优av电影| 久久国产福利国产秒拍| 99精品久久久久久| 日韩av高清在线观看| 欧美大片在线观看一区二区| 国产精品一区免费视频| 国产精品福利一区二区三区| 亚洲一级片在线观看| 国产一区二区三区av电影| 国产欧美一区二区精品忘忧草| 成人性生交大片免费看视频在线| 亚洲另类在线视频| 日韩美女视频一区二区在线观看| 亚洲国产精品一区二区www在线 | 欧美成人精品二区三区99精品| 国产一区视频导航| 亚洲精品免费播放| 久久人人97超碰com| 欧洲日韩一区二区三区| 久久成人免费电影| 久久久久国产精品厨房| 91精品国产欧美一区二区18| 不卡在线视频中文字幕| 全国精品久久少妇| 精品国产乱码久久久久久图片 | 成人一区二区三区| 麻豆精品一区二区三区| 国产午夜精品一区二区三区视频 | 国产日韩一级二级三级| 欧美不卡一区二区三区四区| 欧美专区日韩专区| 91视频在线看| 色哟哟亚洲精品| 色一情一乱一乱一91av| 韩国女主播一区| 欧美一三区三区四区免费在线看 | 精品一区二区三区在线播放| 色噜噜狠狠成人网p站| 国产午夜亚洲精品羞羞网站| 亚洲午夜羞羞片| 国产99久久久久| 久久久亚洲精品一区二区三区| 亚洲777理论| 91福利资源站| 欧美韩日一区二区三区| 婷婷六月综合网| 欧美视频一区二区三区四区| 精品国产乱码久久久久久夜甘婷婷| 久久久久久久久97黄色工厂| 亚洲一区在线看| 在线区一区二视频| 亚洲综合精品自拍| 成人免费不卡视频| 国产精品嫩草影院av蜜臀| 国产精品夜夜嗨| 欧美韩日一区二区三区| 粗大黑人巨茎大战欧美成人| 国产天堂亚洲国产碰碰| 国产原创一区二区| 国产精品私人影院| 国产在线日韩欧美| 国产精品蜜臀在线观看| 91丨九色丨黑人外教| 午夜激情久久久| 久久久久久久免费视频了| 国产成人午夜片在线观看高清观看| 国产女主播一区| 777午夜精品视频在线播放| 国产黄人亚洲片| 国产精品美女久久久久久久久久久 | 国产精品国产a| 欧美日韩一级大片网址| 另类欧美日韩国产在线| 亚洲精品免费一二三区|