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

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

?? hub.c

?? 這是一個同樣來自貝爾實驗室的和UNIX有著淵源的操作系統, 其簡潔的設計和實現易于我們學習和理解
?? C
字號:
#include <u.h>#include <libc.h>#include <thread.h>#include "usb.h"#include "dat.h"#include "fns.h"Hub*roothub(int ctlrno){	Hub *h;	char name[100];	h = emallocz(sizeof(Hub), 1);	h->isroot = 1;	h->ctlrno = ctlrno;	h->nport = 2;			/* BUG */	h->port = emallocz(h->nport*sizeof(Port), 1);	sprint(name, "/dev/usb%d/port", ctlrno);	if((h->portfd = open(name, ORDWR)) < 0){		werrstr("open %s: %r", name);		free(h);		return nil;	}	h->dev0 = opendev(ctlrno, 0);	h->d = h->dev0;	incref(h->d);	return h;}Hub*newhub(Hub *parent, Device *d){	Port *p;	Hub *h;	DHub *dd;	byte buf[128], *PortPwrCtrlMask;	int nr, nport, nmap, i, offset, mask;	h = emallocz(sizeof(Hub), 1);	h->d = d;	h->ctlrno = parent->ctlrno;	h->dev0 = parent->dev0;	if (setupreq(d->ep[0], RD2H|Rclass|Rdevice, GET_DESCRIPTOR, (HUB<<8)|0, 0, DHUBLEN) < 0 ||	   (nr = setupreply(d->ep[0], buf, sizeof(buf))) < DHUBLEN) {		fprint(2, "usbd: error reading hub descriptor\n");		free(h);		return nil;	}	pdesc(d, -1, -1, buf, nr);	dd = (DHub*)buf;	nport = dd->bNbrPorts;	nmap = 1 + nport/8;	if(nr < 7 + 2*nmap) {		fprint(2, "usbd: hub descriptor too small\n");		free(h);		return nil;	}	h->nport = nport;	h->port = emallocz(nport*sizeof(Port), 1);	h->pwrms = dd->bPwrOn2PwrGood*2;	h->maxcurrent = dd->bHubContrCurrent;	h->pwrmode = dd->wHubCharacteristics[0] & 3;	h->compound = (dd->wHubCharacteristics[0] & (1<<2))!=0;	PortPwrCtrlMask = dd->DeviceRemovable + nmap;	for(i = 1; i <= nport; i++) {		p = &h->port[i-1];		offset = i/8;		mask = 1<<(i%8);		p->removable = (dd->DeviceRemovable[offset] & mask) != 0;		p->pwrctl = (PortPwrCtrlMask[offset] & mask) != 0;	}	incref(d);	incref(h->dev0);	return h;}voidfreehub(Hub *h){	int i;	Port *p;	if(h == nil)		return;	for(i = 1; i <= h->nport; i++) {		p = &h->port[i-1];		freehub(p->hub);		closedev(p->d);	}	free(h->port);	if(h->isroot)		close(h->portfd);	else		closedev(h->d);	closedev(h->dev0);	free(h);}intHfmt(Fmt *f){	Hub *h;	h = va_arg(f->args, Hub*);	return fmtprint(f, "usb%d/%d", h->ctlrno, h->d->id);}static voidhubfeature(Hub *h, int port, int feature, int on){	int cmd;	cmd = CLEAR_FEATURE;	if(on)		cmd = SET_FEATURE;	setup0(h->d, RH2D|Rclass|Rother, cmd, feature, port, 0);}voidportenable(Hub *h, int port, int on){	if(h->isroot) {		if(fprint(h->portfd, "%s %d", on? "enable": "disable", port) < 0)			sysfatal("usbd: portenable: write error: %r");		return;	}	if(port == 0)		return;	hubfeature(h, port, PORT_ENABLE, on);}voidportreset(Hub *h, int port){	if(h->isroot) {		if(fprint(h->portfd, "reset %d", port) < 0)			sysfatal("usbd: portreset: write error: %r");		sleep(100);		return;	}	if(port == 0)		return;	hubfeature(h, port, PORT_RESET, 1);}voidportpower(Hub *h, int port, int on){	if(h->isroot) {		/* no power control */		return;	}	if(port == 0)		return;	hubfeature(h, port, PORT_POWER, on);}static struct{	int	bit;	char	*name;}statustab[] ={	{ 1<<PORT_SUSPEND,		"suspend", },	{ 1<<PORT_RESET,			"reset", },	{ 1<<PORT_LOW_SPEED,		"lowspeed", },	{ 1<<PORT_ENABLE,			"enable", },	{ 1<<PORT_CONNECTION,	"present", },};intportstatus(Hub *h, int port){	int x;	Endpt *e;	byte buf[4];	int n, nf, i, j;	char *status, *q, *qe, *field[20];	if(h->isroot) {		seek(h->portfd, 0, 0);		status = malloc(8192);		n = read(h->portfd, status, 8192);		if (n <= 0)			sysfatal("usbd: can't read usb port status: %r");		status[n] = '\0';		q = status;		for(;;) {			qe = strchr(q, '\n');			if(qe == nil)				sysfatal("usbd: port %H.%d not found", h, port);			*qe = '\0';			nf = tokenize(q, field, sizeof field);			if(nf < 2)				sysfatal("Ill-formed port status: %s", q);			if(strtol(field[0], nil, 0) == port)				break;			q = qe+1;		}		x = 0;		for(i = 2; i < nf; i++) {			for(j = 0; j < nelem(statustab); j++) {				if(strcmp(field[i], statustab[j].name) == 0) {					x |= statustab[j].bit;					break;				}			}		}		free(status);		return x;	}	e = h->d->ep[0];	if (setupreq(e, RD2H|Rclass|Rother, GET_STATUS, 0, port, sizeof(buf)) < 0	  || setupreply(e, buf, sizeof(buf)) < sizeof(buf)) {		if (debug)			sysfatal("usbd: error reading hub status %H.%d", h, port);		return 0;	}	return GET2(buf);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清电影一区| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩vs国产vs欧美| 国内精品在线播放| 91丨九色丨国产丨porny| 正在播放一区二区| 国产精品久久久久久户外露出 | 不卡的av在线| 欧美一区二区视频观看视频| 久久亚洲一区二区三区四区| 自拍偷拍亚洲综合| 国内外成人在线| 日本道精品一区二区三区| 欧美成人一区二区三区片免费| 国产精品国产成人国产三级 | 亚洲一二三四在线观看| 国产精品一二三| 91精品国产综合久久婷婷香蕉| 国产精品久久久久久久久搜平片 | 日本乱人伦一区| 久久久青草青青国产亚洲免观| 亚洲一区在线观看视频| 国产成人啪午夜精品网站男同| 欧美日韩国产小视频在线观看| 精品国产一区二区国模嫣然| 一区二区三区 在线观看视频| 国产成人综合视频| 日韩一区二区三区视频在线| 亚洲女女做受ⅹxx高潮| 成人一区二区三区| 久久奇米777| 美洲天堂一区二卡三卡四卡视频| 欧洲人成人精品| 亚洲美女免费视频| 91美女片黄在线观看91美女| 国产色婷婷亚洲99精品小说| 亚洲精品久久久久久国产精华液| 精品午夜久久福利影院| 欧美精品成人一区二区三区四区| 亚洲免费在线电影| 色综合久久综合中文综合网| 中文久久乱码一区二区| 成人h动漫精品| 国产精品美女久久久久久2018| 东方aⅴ免费观看久久av| 欧美一区二区三区四区高清| 调教+趴+乳夹+国产+精品| 欧美亚日韩国产aⅴ精品中极品| 亚洲天堂2016| 91一区二区在线| 一区二区在线电影| 不卡的电视剧免费网站有什么| 久久亚洲精精品中文字幕早川悠里| 麻豆精品视频在线观看免费| 91精品国产综合久久久久久| 蜜臀99久久精品久久久久久软件| 欧美精品一区二区三区四区| 成人精品在线视频观看| 一区二区成人在线| 欧美日韩精品一区二区在线播放| 三级亚洲高清视频| 欧美一区二区精品在线| 黄色精品一二区| 欧美国产日韩在线观看| 99re视频这里只有精品| 亚洲一区二区三区美女| 3d成人h动漫网站入口| 亚洲成人7777| 精品日韩一区二区| aaa欧美色吧激情视频| 亚洲国产精品自拍| 精品国产91久久久久久久妲己| 国产99久久久国产精品潘金| 亚洲精品视频在线观看免费| 91.com视频| 国产成人午夜精品5599| 玉足女爽爽91| 日韩欧美一区在线观看| 成人动漫av在线| 婷婷丁香久久五月婷婷| 欧美激情综合五月色丁香小说| 欧美性高清videossexo| 国产一区福利在线| 亚洲精品国久久99热| 欧美一卡二卡三卡| 色婷婷综合久久久久中文| 一区二区激情视频| 欧美一级艳片视频免费观看| 成人av在线资源网站| 美女一区二区久久| 一区二区三区 在线观看视频| 精品国产一区二区三区久久久蜜月| av爱爱亚洲一区| 国产一区二区三区免费观看| 亚洲妇熟xx妇色黄| 国产精品视频一二三区 | 久久伊人蜜桃av一区二区| 成人国产精品免费观看| 一区二区三区四区不卡视频 | 色婷婷综合久久久久中文一区二区| 久久er精品视频| 一区二区激情小说| 国产精品三级电影| 久久久久久9999| 欧美一级淫片007| 日本精品裸体写真集在线观看 | 国产乱理伦片在线观看夜一区| 一级精品视频在线观看宜春院| 国产欧美日韩中文久久| 欧美一级一区二区| 欧美日韩免费电影| 丁香婷婷综合网| 国内精品写真在线观看| 天堂蜜桃一区二区三区| 亚洲精品亚洲人成人网| 中文字幕av一区二区三区高| 欧美日韩国产小视频| 成人动漫一区二区| caoporn国产一区二区| 国产乱妇无码大片在线观看| 美国毛片一区二区三区| 视频一区在线播放| 亚洲不卡在线观看| 一区二区日韩av| 一级做a爱片久久| 亚洲一区精品在线| 美女一区二区视频| 成人一区二区在线观看| 色视频欧美一区二区三区| 欧美视频日韩视频在线观看| 91精品国产综合久久香蕉麻豆| 精品久久五月天| 亚洲天堂中文字幕| 一区二区三区国产| 亚洲一级二级在线| 日日欢夜夜爽一区| 另类欧美日韩国产在线| 国内国产精品久久| 国产成人在线电影| www.成人网.com| 91激情在线视频| 欧美日韩一区二区在线视频| 欧美一区二区三区视频免费播放 | 日韩毛片一二三区| 亚洲女人****多毛耸耸8| 亚洲制服欧美中文字幕中文字幕| 亚洲国产精品久久久久婷婷884| 美女脱光内衣内裤视频久久网站| 国产成人免费高清| 欧美理论片在线| 国产精品麻豆一区二区| 婷婷综合在线观看| jiyouzz国产精品久久| 91精品国产91综合久久蜜臀| 国产精品进线69影院| 日韩电影免费在线| 成人18视频在线播放| 3atv一区二区三区| 亚洲色图欧洲色图婷婷| 久久91精品久久久久久秒播| 在线观看视频一区二区| 亚洲另类在线制服丝袜| 青青草国产成人99久久| av一本久道久久综合久久鬼色| 91精品婷婷国产综合久久| 中文字幕亚洲不卡| 国产美女在线精品| 欧美裸体一区二区三区| 亚洲欧美日韩国产手机在线| 国模大尺度一区二区三区| 欧美日韩国产系列| 亚洲精品国产成人久久av盗摄 | 蜜臀av性久久久久蜜臀av麻豆| 91视频在线看| 中文字幕欧美国产| 国产资源在线一区| 制服丝袜在线91| 亚洲国产wwwccc36天堂| 91视频在线看| 国产精品国产三级国产aⅴ入口| 国产揄拍国内精品对白| 欧美一区二区三区免费在线看 | 亚洲黄色在线视频| 99这里都是精品| 中文av一区二区| 国产91在线观看| 久久精品一区二区三区不卡牛牛| 美女一区二区三区| 欧美哺乳videos| 免费观看在线综合色| 91麻豆精品91久久久久同性| 一区二区三区在线不卡| 91美女在线观看| 亚洲黄色免费电影| 欧美三级日韩在线| 亚洲大片在线观看| 欧美人狂配大交3d怪物一区 | 911国产精品| 久久www免费人成看片高清| 欧美变态tickle挠乳网站|