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

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

?? usbdcore.c

?? OMAP1510的USB驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
{	return (device->status == USB_STATUS_HALT);}/** * usbd_rcv_complete - complete a receive * @endpoint: * @len: * @urb_bad: * * Called from rcv interrupt to complete. */void usbd_rcv_complete(struct usb_endpoint_instance *endpoint, int len, int urb_bad){	if (endpoint) {		struct urb *rcv_urb;		/*usbdbg("len: %d urb: %p\n", len, endpoint->rcv_urb); */		/* if we had an urb then update actual_length, dispatch if neccessary */		if ((rcv_urb = endpoint->rcv_urb)) {			/*usbdbg("actual: %d buffer: %d\n", */			/*rcv_urb->actual_length, rcv_urb->buffer_length); */			/* check the urb is ok, are we adding data less than the packetsize */			if (!urb_bad && (len <= endpoint->rcv_packetSize)) {			  /*usbdbg("updating actual_length by %d\n",len); */				/* increment the received data size */				rcv_urb->actual_length += len;			} else {				usberr(" RECV_ERROR actual: %d buffer: %d urb_bad: %d\n",				       rcv_urb->actual_length, rcv_urb->buffer_length, urb_bad);				rcv_urb->actual_length = 0;				rcv_urb->status = RECV_ERROR;			}		} else {			usberr("no rcv_urb!");		}	} else {		usberr("no endpoint!");	}}/** * usbd_tx_complete - complete a transmit * @endpoint: * @resetart: * * Called from tx interrupt to complete. */void usbd_tx_complete (struct usb_endpoint_instance *endpoint){	if (endpoint) {		struct urb *tx_urb;		/* if we have a tx_urb advance or reset, finish if complete */		if ((tx_urb = endpoint->tx_urb)) {			int sent = endpoint->last;			endpoint->sent += sent;			endpoint->last -= sent;			if( (endpoint->tx_urb->actual_length - endpoint->sent) <= 0 ) {				tx_urb->actual_length = 0;				endpoint->sent = 0;				endpoint->last = 0;				/* Remove from active, save for re-use */				urb_detach(tx_urb);				urb_append(&endpoint->done, tx_urb);				/*usbdbg("done->next %p, tx_urb %p, done %p", */				/*	 endpoint->done.next, tx_urb, &endpoint->done); */				endpoint->tx_urb = first_urb_detached(&endpoint->tx);				if( endpoint->tx_urb ) {					endpoint->tx_queue--;					usbdbg("got urb from tx list");				}				if( !endpoint->tx_urb ) {					/*usbdbg("taking urb from done list"); */					endpoint->tx_urb = first_urb_detached(&endpoint->done);				}				if( !endpoint->tx_urb ) {					usbdbg("allocating new urb for tx_urb");					endpoint->tx_urb = usbd_alloc_urb(tx_urb->device, endpoint);				}			}		}	}}/* URB linked list functions ***************************************************** *//* * Initialize an urb_link to be a single element list. * If the urb_link is being used as a distinguished list head * the list is empty when the head is the only link in the list. */void urb_link_init (urb_link * ul){	if (ul) {		ul->prev = ul->next = ul;	}}/* * Detach an urb_link from a list, and set it * up as a single element list, so no dangling * pointers can be followed, and so it can be * joined to another list if so desired. */void urb_detach (struct urb *urb){	if (urb) {		urb_link *ul = &urb->link;		ul->next->prev = ul->prev;		ul->prev->next = ul->next;		urb_link_init (ul);	}}/* * Return the first urb_link in a list with a distinguished * head "hd", or NULL if the list is empty.  This will also * work as a predicate, returning NULL if empty, and non-NULL * otherwise. */urb_link *first_urb_link (urb_link * hd){	urb_link *nx;	if (NULL != hd && NULL != (nx = hd->next) && nx != hd) {		/* There is at least one element in the list */		/* (besides the distinguished head). */		return (nx);	}	/* The list is empty */	return (NULL);}/* * Return the first urb in a list with a distinguished * head "hd", or NULL if the list is empty. */struct urb *first_urb (urb_link * hd){	urb_link *nx;	if (NULL == (nx = first_urb_link (hd))) {		/* The list is empty */		return (NULL);	}	return (p2surround (struct urb, link, nx));}/* * Detach and return the first urb in a list with a distinguished * head "hd", or NULL if the list is empty. * */struct urb *first_urb_detached (urb_link * hd){	struct urb *urb;	if ((urb = first_urb (hd))) {		urb_detach (urb);	}	return urb;}/* * Append an urb_link (or a whole list of * urb_links) to the tail of another list * of urb_links. */void urb_append (urb_link * hd, struct urb *urb){	if (hd && urb) {		urb_link *new = &urb->link;		/* This allows the new urb to be a list of urbs, */		/* with new pointing at the first, but the link */		/* must be initialized. */		/* Order is important here... */		urb_link *pul = hd->prev;		new->prev->next = hd;		hd->prev = new->prev;		new->prev = pul;		pul->next = new;	}}/* URB create/destroy functions ***************************************************** *//** * usbd_alloc_urb - allocate an URB appropriate for specified endpoint * @device: device instance * @endpoint: endpoint * * Allocate an urb structure. The usb device urb structure is used to * contain all data associated with a transfer, including a setup packet for * control transfers. * * NOTE: endpoint_address MUST contain a direction flag. */struct urb *usbd_alloc_urb (struct usb_device_instance *device, struct usb_endpoint_instance *endpoint){	struct urb *urb;	if( !(urb = (struct urb*)malloc(sizeof(struct urb))) ) {	  usberr(" F A T A L:  malloc(%u) FAILED!!!!", sizeof(struct urb));	  return NULL;	}	/* Fill in known fields */	memset(urb, 0, sizeof(struct urb));	urb->endpoint = endpoint;	urb->device = device;	urb->buffer = (u8*)urb->buffer_data;	urb->buffer_length = sizeof(urb->buffer_data);	urb_link_init (&urb->link);	return urb;}/** * usbd_dealloc_urb - deallocate an URB and associated buffer * @urb: pointer to an urb structure * * Deallocate an urb structure and associated data. */void usbd_dealloc_urb (struct urb *urb){	if (urb) {		free (urb);	}}/* Event signaling functions ***************************************************** *//** * usbd_device_event - called to respond to various usb events * @device: pointer to struct device * @event: event to respond to * * Used by a Bus driver to indicate an event. */void usbd_device_event_irq (struct usb_device_instance *device, usb_device_event_t event, int data){	usb_device_state_t state;	if (!device || !device->bus) {		usberr("(%p,%d) NULL device or device->bus", device, event);		return;	}	state = device->device_state;	usbinfo("%s", usbd_device_events[event]);	switch (event) {	case DEVICE_UNKNOWN:		break;	case DEVICE_INIT:		device->device_state = STATE_INIT;		break;	case DEVICE_CREATE:		device->device_state = STATE_ATTACHED;		break;	case DEVICE_HUB_CONFIGURED:		device->device_state = STATE_POWERED;		break;	case DEVICE_RESET:		device->device_state = STATE_DEFAULT;		device->address = 0;		break;	case DEVICE_ADDRESS_ASSIGNED:		device->device_state = STATE_ADDRESSED;		break;	case DEVICE_CONFIGURED:		device->device_state = STATE_CONFIGURED;		break;	case DEVICE_DE_CONFIGURED:		device->device_state = STATE_ADDRESSED;		break;	case DEVICE_BUS_INACTIVE:		if (device->status != USBD_CLOSING) {			device->status = USBD_SUSPENDED;		}		break;	case DEVICE_BUS_ACTIVITY:		if (device->status != USBD_CLOSING) {			device->status = USBD_OK;		}		break;	case DEVICE_SET_INTERFACE:		break;	case DEVICE_SET_FEATURE:		break;	case DEVICE_CLEAR_FEATURE:		break;	case DEVICE_POWER_INTERRUPTION:		device->device_state = STATE_POWERED;		break;	case DEVICE_HUB_RESET:		device->device_state = STATE_ATTACHED;		break;	case DEVICE_DESTROY:		device->device_state = STATE_UNKNOWN;		break;	case DEVICE_FUNCTION_PRIVATE:		break;	default:		usbdbg("event %d - not handled",event);		break;	}	/*usbdbg("%s event: %d oldstate: %d newstate: %d status: %d address: %d",		device->name, event, state,		device->device_state, device->status, device->address); */	/* tell the bus interface driver */	if( device->event ) {		/* usbdbg("calling device->event"); */		device->event(device, event, data);	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美三级在线| 色88888久久久久久影院野外| 日本中文字幕不卡| 韩国理伦片一区二区三区在线播放| 国内精品国产三级国产a久久| 国产成人精品综合在线观看| 91亚洲国产成人精品一区二区三| 欧美视频一区二| 精品久久久久久最新网址| 国产精品天美传媒| 亚洲第一主播视频| 国产成人精品免费在线| 欧美在线高清视频| 国产日本一区二区| 日本视频一区二区三区| 国产成人h网站| 国产·精品毛片| 欧美久久一二三四区| 国产精品久久久久久久久久免费看 | 国产酒店精品激情| 欧美色大人视频| 亚洲欧美日韩在线| 丁香另类激情小说| 国产色一区二区| 久久精品国产精品青草| 精品视频123区在线观看| 亚洲激情图片一区| 99久久精品国产精品久久| 久久久国际精品| 久久99久国产精品黄毛片色诱| 91久久精品一区二区三| 一区二区三区四区激情| 91精品国产免费久久综合| 国产欧美日韩亚州综合| 狠狠色丁香久久婷婷综合_中| 欧美一区二区三区视频在线| 日韩一区欧美二区| 欧美一二三四区在线| 免费的成人av| 久久久美女艺术照精彩视频福利播放| 久久爱www久久做| 国产精品色噜噜| 在线观看国产精品网站| 亚洲成人在线网站| 欧美大白屁股肥臀xxxxxx| 国产乱子伦一区二区三区国色天香| 日韩精品一区二区三区视频播放| 蜜桃av一区二区三区| 欧美极品另类videosde| 在线日韩一区二区| 久草这里只有精品视频| 亚洲美女视频在线| 日韩视频在线观看一区二区| 成人a区在线观看| 性欧美大战久久久久久久久| 精品久久一区二区| 欧美三级资源在线| 成人精品国产一区二区4080| 天天色图综合网| 亚洲特黄一级片| www精品美女久久久tv| 欧美二区在线观看| 91黄色激情网站| 成人精品亚洲人成在线| 午夜久久久影院| 亚洲午夜久久久| 91福利在线免费观看| 国产麻豆日韩欧美久久| 无码av中文一区二区三区桃花岛| 欧美国产1区2区| 日韩视频在线观看一区二区| 色国产精品一区在线观看| www.日韩大片| av亚洲精华国产精华| 成人va在线观看| 豆国产96在线|亚洲| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 视频一区欧美日韩| 欧美日韩色综合| 成人激情黄色小说| 成人午夜av电影| 99久久99久久免费精品蜜臀| 成人晚上爱看视频| 97aⅴ精品视频一二三区| a在线欧美一区| 在线观看www91| 69久久夜色精品国产69蝌蚪网| 在线观看一区二区视频| 色视频欧美一区二区三区| 在线视频你懂得一区二区三区| 91啪在线观看| 在线综合+亚洲+欧美中文字幕| 久久精品国产亚洲一区二区三区| 日本一区二区三区高清不卡| 亚洲国产精品高清| 亚洲风情在线资源站| 美女mm1313爽爽久久久蜜臀| 成人爱爱电影网址| 欧美精品乱人伦久久久久久| 日韩欧美亚洲一区二区| 亚洲国产激情av| 全部av―极品视觉盛宴亚洲| 国产精品一线二线三线精华| 色先锋aa成人| 日本一区二区三区国色天香| 亚洲综合一区二区精品导航| 国产精品亚洲第一 | 欧美成人综合网站| 精品福利一区二区三区| 一区二区三区四区在线| 高清久久久久久| 精品久久久久久久久久久久久久久 | 一区二区在线免费观看| 成人性生交大片免费| 欧美蜜桃一区二区三区| 亚洲精品福利视频网站| 国产成人aaa| 国产视频视频一区| 韩国成人福利片在线播放| 欧美va天堂va视频va在线| 捆绑变态av一区二区三区| 欧美日韩大陆在线| 亚洲v日本v欧美v久久精品| 日本精品视频一区二区三区| 亚洲人成在线播放网站岛国| 91网站视频在线观看| 亚洲精品高清在线| 欧美私模裸体表演在线观看| 亚洲成av人片一区二区三区| 欧美日本一区二区| 久久99这里只有精品| 久久麻豆一区二区| 丰满少妇在线播放bd日韩电影| 国产精品高清亚洲| 欧美影院一区二区| 久久er99精品| 亚洲同性同志一二三专区| 在线看日韩精品电影| 久久99国产精品免费| 亚洲视频网在线直播| 制服丝袜激情欧洲亚洲| 亚洲成av人在线观看| 欧美疯狂做受xxxx富婆| 国产一区二区三区四区在线观看| 日本怡春院一区二区| 国产精品你懂的在线欣赏| 欧美日韩一区成人| 粉嫩av一区二区三区粉嫩| 亚洲国产精品久久不卡毛片| 久久久三级国产网站| 欧美日韩国产首页| 国产高清无密码一区二区三区| 亚洲自拍偷拍综合| 国产精品免费av| 欧美视频一区在线观看| 国产91色综合久久免费分享| 日韩国产欧美在线播放| 综合色中文字幕| 亚洲国产高清不卡| 国产三级精品在线| 久久蜜桃av一区精品变态类天堂| 欧美久久久久久久久久| 成人va在线观看| 国产成人免费网站| 国产福利一区二区三区在线视频| 日韩精品一级中文字幕精品视频免费观看 | 亚洲色图欧洲色图| 亚洲一级二级在线| 亚洲丰满少妇videoshd| 午夜久久福利影院| 日韩在线一区二区三区| 视频在线观看91| 久久精品国产999大香线蕉| 精品一区二区三区在线观看| 免费成人深夜小野草| 国产成人在线网站| 91视频com| 日韩欧美激情一区| 2014亚洲片线观看视频免费| 久久天天做天天爱综合色| 久久久久国产成人精品亚洲午夜| 久久精品水蜜桃av综合天堂| 久久精品一区二区三区四区| 日韩理论片在线| 美腿丝袜亚洲色图| 色系网站成人免费| 日韩色视频在线观看| 国产精品久久久久一区二区三区| 亚洲综合一区在线| 国产精品18久久久| 欧美三级视频在线观看| 中文字幕免费一区| 美女mm1313爽爽久久久蜜臀| av中文字幕亚洲| 久久久久久久久久久久久夜| 亚洲精品久久久蜜桃| 国产一区二区三区在线观看精品| 91精彩视频在线观看| 欧美国产日本视频| 精品一区二区三区影院在线午夜 |