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

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

?? xusbatm.c

?? linux-2.6.15.6
?? C
字號:
/****************************************************************************** *  xusbatm.c -	dumb usbatm-based driver for modems initialized in userspace * *  Copyright (C) 2005 Duncan Sands, Roman Kagan (rkagan % mail ! ru) * *  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. * *  This program is distributed in the hope that it will be useful, but WITHOUT *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for *  more details. * *  You should have received a copy of the GNU General Public License along with *  this program; if not, write to the Free Software Foundation, Inc., 59 *  Temple Place - Suite 330, Boston, MA  02111-1307, USA. * ******************************************************************************/#include <linux/module.h>#include <linux/netdevice.h>		/* FIXME: required by linux/etherdevice.h */#include <linux/etherdevice.h>		/* for random_ether_addr() */#include "usbatm.h"#define XUSBATM_DRIVERS_MAX	8#define XUSBATM_PARM(name, type, parmtype, desc) \	static type name[XUSBATM_DRIVERS_MAX]; \	static int num_##name; \	module_param_array(name, parmtype, &num_##name, 0444); \	MODULE_PARM_DESC(name, desc)XUSBATM_PARM(vendor, unsigned short, ushort, "USB device vendor");XUSBATM_PARM(product, unsigned short, ushort, "USB device product");XUSBATM_PARM(rx_endpoint, unsigned char, byte, "rx endpoint number");XUSBATM_PARM(tx_endpoint, unsigned char, byte, "tx endpoint number");XUSBATM_PARM(rx_padding, unsigned char, byte, "rx padding (default 0)");XUSBATM_PARM(tx_padding, unsigned char, byte, "tx padding (default 0)");static const char xusbatm_driver_name[] = "xusbatm";static struct usbatm_driver xusbatm_drivers[XUSBATM_DRIVERS_MAX];static struct usb_device_id xusbatm_usb_ids[XUSBATM_DRIVERS_MAX + 1];static struct usb_driver xusbatm_usb_driver;static int usb_intf_has_ep(const struct usb_interface *intf, u8 ep){	int i, j;	for (i = 0; i < intf->num_altsetting; i++) {		struct usb_host_interface *alt = intf->altsetting;		for (j = 0; j < alt->desc.bNumEndpoints; j++)			if ((alt->endpoint[i].desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK) == ep)				return 1;	}	return 0;}static int xusbatm_bind(struct usbatm_data *usbatm_instance,			struct usb_interface *intf, const struct usb_device_id *id,			int *need_heavy_init){	struct usb_device *usb_dev = interface_to_usbdev(intf);	int drv_ix = id - xusbatm_usb_ids;	int rx_ep_present = usb_intf_has_ep(intf, rx_endpoint[drv_ix]);	int tx_ep_present = usb_intf_has_ep(intf, tx_endpoint[drv_ix]);	u8 searched_ep = rx_ep_present ? tx_endpoint[drv_ix] : rx_endpoint[drv_ix];	int i, ret;	usb_dbg(usbatm_instance, "%s: binding driver %d: vendor %#x product %#x"		" rx: ep %#x padd %d tx: ep %#x padd %d\n",		__func__, drv_ix, vendor[drv_ix], product[drv_ix],		rx_endpoint[drv_ix], rx_padding[drv_ix],		tx_endpoint[drv_ix], tx_padding[drv_ix]);	if (!rx_ep_present && !tx_ep_present) {		usb_dbg(usbatm_instance, "%s: intf #%d has neither rx (%#x) nor tx (%#x) endpoint\n",			__func__, intf->altsetting->desc.bInterfaceNumber,			rx_endpoint[drv_ix], tx_endpoint[drv_ix]);		return -ENODEV;	}	if (rx_ep_present && tx_ep_present)		return 0;	for(i = 0; i < usb_dev->actconfig->desc.bNumInterfaces; i++) {		struct usb_interface *cur_if = usb_dev->actconfig->interface[i];		if (cur_if != intf && usb_intf_has_ep(cur_if, searched_ep)) {			ret = usb_driver_claim_interface(&xusbatm_usb_driver,							 cur_if, usbatm_instance);			if (!ret)				usb_err(usbatm_instance, "%s: failed to claim interface #%d (%d)\n",					__func__, cur_if->altsetting->desc.bInterfaceNumber, ret);			return ret;		}	}	usb_err(usbatm_instance, "%s: no interface has endpoint %#x\n",		__func__, searched_ep);	return -ENODEV;}static void xusbatm_unbind(struct usbatm_data *usbatm_instance,			   struct usb_interface *intf){	struct usb_device *usb_dev = interface_to_usbdev(intf);	int i;	usb_dbg(usbatm_instance, "%s entered\n", __func__);	for(i = 0; i < usb_dev->actconfig->desc.bNumInterfaces; i++) {		struct usb_interface *cur_if = usb_dev->actconfig->interface[i];		usb_set_intfdata(cur_if, NULL);		usb_driver_release_interface(&xusbatm_usb_driver, cur_if);	}}static int xusbatm_atm_start(struct usbatm_data *usbatm_instance,			     struct atm_dev *atm_dev){	atm_dbg(usbatm_instance, "%s entered\n", __func__);	/* use random MAC as we've no way to get it from the device */	random_ether_addr(atm_dev->esi);	return 0;}static int xusbatm_usb_probe(struct usb_interface *intf,			     const struct usb_device_id *id){	return usbatm_usb_probe(intf, id,				xusbatm_drivers + (id - xusbatm_usb_ids));}static struct usb_driver xusbatm_usb_driver = {	.owner		= THIS_MODULE,	.name		= xusbatm_driver_name,	.probe		= xusbatm_usb_probe,	.disconnect	= usbatm_usb_disconnect,	.id_table	= xusbatm_usb_ids};static int __init xusbatm_init(void){	int i;	dbg("xusbatm_init");	if (!num_vendor ||	    num_vendor != num_product ||	    num_vendor != num_rx_endpoint ||	    num_vendor != num_tx_endpoint) {		warn("malformed module parameters");		return -EINVAL;	}	for (i = 0; i < num_vendor; i++) {		xusbatm_usb_ids[i].match_flags	= USB_DEVICE_ID_MATCH_DEVICE;		xusbatm_usb_ids[i].idVendor	= vendor[i];		xusbatm_usb_ids[i].idProduct	= product[i];		xusbatm_drivers[i].owner	= THIS_MODULE;		xusbatm_drivers[i].driver_name	= xusbatm_driver_name;		xusbatm_drivers[i].bind		= xusbatm_bind;		xusbatm_drivers[i].unbind	= xusbatm_unbind;		xusbatm_drivers[i].atm_start	= xusbatm_atm_start;		xusbatm_drivers[i].in		= rx_endpoint[i];		xusbatm_drivers[i].out		= tx_endpoint[i];		xusbatm_drivers[i].rx_padding	= rx_padding[i];		xusbatm_drivers[i].tx_padding	= tx_padding[i];	}	return usb_register(&xusbatm_usb_driver);}module_init(xusbatm_init);static void __exit xusbatm_exit(void){	dbg("xusbatm_exit entered");	usb_deregister(&xusbatm_usb_driver);}module_exit(xusbatm_exit);MODULE_AUTHOR("Roman Kagan, Duncan Sands");MODULE_DESCRIPTION("Driver for USB ADSL modems initialized in userspace");MODULE_LICENSE("GPL");MODULE_VERSION("0.1");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人激情小说乱人伦| 日韩欧美成人一区| 91尤物视频在线观看| 成人丝袜高跟foot| 国产激情视频一区二区三区欧美 | 国产在线观看免费一区| 美日韩一区二区| 麻豆国产欧美日韩综合精品二区| 日韩电影网1区2区| 乱一区二区av| 国产成人精品网址| 99久久国产综合色|国产精品| 色综合视频在线观看| 在线观看av一区二区| 欧美精品九九99久久| 欧美一级国产精品| 精品国产三级电影在线观看| 国产亚洲短视频| 国产精品国产三级国产三级人妇| 亚洲精品菠萝久久久久久久| 亚洲最快最全在线视频| 天天综合色天天综合色h| 麻豆成人av在线| 国产成人三级在线观看| 91在线观看视频| 欧美日韩国产bt| 精品成a人在线观看| 国产精品久久网站| 亚洲 欧美综合在线网络| 琪琪久久久久日韩精品| 国产精品羞羞答答xxdd| 99久久精品国产网站| 欧美日韩国产一区二区三区地区| 欧美成人a∨高清免费观看| 国产三级一区二区| 亚洲一区欧美一区| 毛片av中文字幕一区二区| 丁香婷婷综合色啪| 欧美日韩一区久久| 久久日一线二线三线suv| 亚洲视频一区在线| 捆绑调教美女网站视频一区| 成人午夜免费电影| 欧美日韩国产小视频在线观看| 日韩精品一区二区三区视频播放 | 欧美色精品天天在线观看视频| 欧美电影免费观看高清完整版在线观看 | 欧美精品在线视频| 国产亚洲美州欧州综合国| 亚洲愉拍自拍另类高清精品| 韩国三级在线一区| 91国在线观看| 久久久久久久久蜜桃| 一区二区三区欧美日韩| 国产精品一线二线三线精华| 欧美在线观看视频一区二区 | 欧美国产日韩精品免费观看| 午夜精品久久一牛影视| 成人午夜激情影院| 欧美一区二区三区喷汁尤物| 中文字幕一区二区三区精华液| 日韩高清中文字幕一区| 99re热视频精品| 精品国产乱码久久久久久影片| 一区二区三区美女| 国产99久久久国产精品| 欧美一激情一区二区三区| 亚洲精品高清在线观看| 东方欧美亚洲色图在线| 日韩欧美黄色影院| 午夜精品影院在线观看| 91美女视频网站| 国产欧美精品区一区二区三区| 日韩国产精品久久久久久亚洲| 91小视频在线观看| 久久精品视频免费| 久久综合综合久久综合| 欧美日韩精品久久久| 亚洲精品水蜜桃| gogo大胆日本视频一区| 久久蜜桃av一区二区天堂| 麻豆精品视频在线观看| 884aa四虎影成人精品一区| 一区二区三区欧美日韩| 91免费看片在线观看| 国产精品女同一区二区三区| 国产一区二区三区四区在线观看| 日韩欧美一二三区| 日韩中文字幕1| 精品视频在线看| 亚洲夂夂婷婷色拍ww47| 色综合久久88色综合天天6| 日韩理论片在线| eeuss鲁一区二区三区| 久久久久88色偷偷免费| 国产精品一二三区| 国产视频一区二区在线| 国产乱色国产精品免费视频| 欧美精品一区在线观看| 国产一区二区网址| 久久精品一级爱片| 国产成人精品亚洲777人妖| 国产婷婷色一区二区三区| 国产成人精品影视| 中文字幕av一区二区三区高| 国产成人综合视频| 中文字幕不卡一区| 91视视频在线直接观看在线看网页在线看| 中文字幕欧美激情一区| av不卡免费电影| 亚洲女同女同女同女同女同69| 91理论电影在线观看| 一区二区三区在线观看欧美| 欧洲一区二区三区免费视频| 亚洲午夜精品17c| 欧美日本韩国一区| 老司机午夜精品99久久| 国产欧美精品一区aⅴ影院| 99久久久无码国产精品| 一区二区三区久久| 91精品国产91热久久久做人人| 蜜臀va亚洲va欧美va天堂| 久久尤物电影视频在线观看| 国产成人av电影在线播放| 亚洲视频一区二区在线| 精品视频一区二区三区免费| 美女视频免费一区| 国产日韩欧美制服另类| 一本色道久久综合亚洲91| 五月激情综合婷婷| 精品国产麻豆免费人成网站| 国产成人午夜精品影院观看视频 | 午夜私人影院久久久久| 在线播放日韩导航| 国产麻豆91精品| 亚洲人精品一区| 91麻豆精品91久久久久同性| 国产一区二区精品久久99| 中文字幕亚洲电影| 欧美日韩久久一区二区| 国模冰冰炮一区二区| 一区二区三区四区在线播放| 欧美成人乱码一区二区三区| 成人app在线观看| 日韩国产欧美三级| 国产精品视频你懂的| 欧美日韩另类一区| 国产精品亚洲视频| 亚洲h在线观看| 国产清纯美女被跳蛋高潮一区二区久久w| 91视频.com| 久久成人免费网| 亚洲黄色性网站| 国产亚洲欧美激情| 欧美精品 国产精品| 丁香六月综合激情| 首页国产欧美日韩丝袜| 国产精品久久久久久久久免费丝袜| 欧美女孩性生活视频| 风间由美一区二区三区在线观看| 亚洲福利电影网| 中文字幕一区不卡| 欧美xxx久久| 欧美午夜精品一区二区蜜桃| 粉嫩av一区二区三区在线播放| 五月综合激情日本mⅴ| 中文字幕在线不卡国产视频| 精品精品国产高清一毛片一天堂| 91高清视频免费看| 高潮精品一区videoshd| 男女男精品视频网| 亚洲妇熟xx妇色黄| 亚洲人成网站色在线观看| 国产三级精品三级| 日韩欧美区一区二| 在线播放日韩导航| 欧美色图在线观看| 99riav久久精品riav| 国产精品18久久久久久久久久久久 | 91亚洲国产成人精品一区二三| 激情都市一区二区| 蜜臀久久99精品久久久画质超高清| 一个色在线综合| 亚洲天堂免费在线观看视频| 国产午夜亚洲精品午夜鲁丝片| 日韩限制级电影在线观看| 欧美日韩精品欧美日韩精品一| 91在线视频网址| 成人激情小说乱人伦| 国产一区二区伦理| 国产一区二区成人久久免费影院| 天堂一区二区在线免费观看| 一区二区三区精品久久久| 综合自拍亚洲综合图不卡区| 国产欧美日韩亚州综合| 久久精品亚洲精品国产欧美kt∨| 欧美不卡在线视频| 欧美电影免费观看高清完整版 | 亚洲高清久久久| 亚洲午夜精品在线|