您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ usb_unanchor_urb函数代码示例

51自学网 2021-06-03 09:21:46
  C++
这篇教程C++ usb_unanchor_urb函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中usb_unanchor_urb函数的典型用法代码示例。如果您正苦于以下问题:C++ usb_unanchor_urb函数的具体用法?C++ usb_unanchor_urb怎么用?C++ usb_unanchor_urb使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了usb_unanchor_urb函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: ikalcd_write

//.........这里部分代码省略.........		}	}	spin_lock_irq(&dev->err_lock);	retval = dev->errors;	if (retval < 0) {		/* any error is reported once */		dev->errors = 0;		/* to preserve notifications about reset */		retval = (retval == -EPIPE) ? retval : -EIO;	}	spin_unlock_irq(&dev->err_lock);	if (retval < 0)		goto error;	/* create a urb, and a buffer for it, and copy the data to the urb */	urb = usb_alloc_urb(0, GFP_KERNEL);	if (!urb) {		retval = -ENOMEM;		goto error;	}	/*	buf = usb_alloc_coherent(dev->udev, writesize, GFP_KERNEL,				 &urb->transfer_dma);	*/	buf = kmalloc(LCD_COMMAND_SIZE, GFP_KERNEL);	if (!buf) {		retval = -ENOMEM;		goto error;	}	cr = kmalloc(sizeof(struct usb_ctrlrequest), GFP_KERNEL);	if (!cr) {		retval = -ENOMEM;		goto error;	}	for (i=0; i<LCD_COMMAND_SIZE; i++)		buf[i] = 0x11;	if (copy_from_user(buf, user_buffer, writesize)) {		retval = -EFAULT;		goto error;	}	/* this lock makes sure we don't submit URBs to gone devices */	mutex_lock(&dev->io_mutex);	if (!dev->interface) {		/* disconnect() was called */		mutex_unlock(&dev->io_mutex);		retval = -ENODEV;		goto error;	}	cr->bRequestType = USB_TYPE_CLASS | USB_RECIP_INTERFACE;	cr->bRequest = 0x09;	cr->wValue = cpu_to_le16(0x300);	cr->wIndex = cpu_to_le16(dev->interface->cur_altsetting->desc.bInterfaceNumber);	cr->wLength = cpu_to_le16(LCD_COMMAND_SIZE);	/* initialize the urb properly */	/*	usb_fill_bulk_urb(urb, dev->udev,			  usb_sndbulkpipe(dev->udev, dev->bulk_out_endpointAddr),			  buf, writesize, ikalcd_write_bulk_callback, dev);	urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;	*/	usb_fill_control_urb(urb, dev->udev, usb_sndctrlpipe(dev->udev, 0),			     (unsigned char*)cr, (void*)buf, LCD_COMMAND_SIZE,			     ikalcd_write_control_callback, dev);	usb_anchor_urb(urb, &dev->submitted);	/* send the data out the bulk port */	retval = usb_submit_urb(urb, GFP_KERNEL);	mutex_unlock(&dev->io_mutex);	if (retval) {		dev_err(&dev->interface->dev,			"%s - failed submitting write urb, error %d/n",			__func__, retval);		goto error_unanchor;	}	/*	 * release our reference to this urb, the USB core will eventually free	 * it entirely	 */	usb_free_urb(urb);	return writesize;error_unanchor:	usb_unanchor_urb(urb);error:	if (urb) {		usb_free_coherent(dev->udev, writesize, buf, urb->transfer_dma);		usb_free_urb(urb);	}	up(&dev->limit_sem);exit:	return retval;}
开发者ID:hogeki,项目名称:ikalcd,代码行数:101,


示例2: notification_available_cb

static void notification_available_cb(struct urb *urb){	int				status;	struct usb_cdc_notification	*ctrl;	struct usb_device		*udev;	struct ctrl_bridge		*dev = urb->context;	struct bridge			*brdg = dev->brdg;	unsigned int			ctrl_bits;	unsigned char			*data;	udev = interface_to_usbdev(dev->intf);	switch (urb->status) {	case 0:		/*success*/		break;	case -ESHUTDOWN:	case -ENOENT:	case -ECONNRESET:	case -EPROTO:		 /* unplug */		 return;	case -EPIPE:		dev_err(&udev->dev, "%s: stall on int endpoint/n", __func__);		/* TBD : halt to be cleared in work */	case -EOVERFLOW:	default:		pr_debug_ratelimited("%s: non zero urb status = %d/n",					__func__, urb->status);		goto resubmit_int_urb;	}	ctrl = (struct usb_cdc_notification *)urb->transfer_buffer;	data = (unsigned char *)(ctrl + 1);	switch (ctrl->bNotificationType) {	case USB_CDC_NOTIFY_RESPONSE_AVAILABLE:		dev->resp_avail++;		usb_fill_control_urb(dev->readurb, udev,					usb_rcvctrlpipe(udev, 0),					(unsigned char *)dev->in_ctlreq,					dev->readbuf,					DEFAULT_READ_URB_LENGTH,					resp_avail_cb, dev);		usb_anchor_urb(dev->readurb, &dev->tx_submitted);		status = usb_submit_urb(dev->readurb, GFP_ATOMIC);		if (status) {			dev_err(&udev->dev,				"%s: Error submitting Read URB %d/n",				__func__, status);			usb_unanchor_urb(dev->readurb);			goto resubmit_int_urb;		}		return;	case USB_CDC_NOTIFY_NETWORK_CONNECTION:		dev_dbg(&udev->dev, "%s network/n", ctrl->wValue ?					"connected to" : "disconnected from");		break;	case USB_CDC_NOTIFY_SERIAL_STATE:		dev->notify_ser_state++;		ctrl_bits = get_unaligned_le16(data);		dev_dbg(&udev->dev, "serial state: %d/n", ctrl_bits);		dev->cbits_tohost = ctrl_bits;		if (brdg && brdg->ops.send_cbits)			brdg->ops.send_cbits(brdg->ctx, ctrl_bits);		break;	default:		dev_err(&udev->dev, "%s: unknown notification %d received:"			"index %d len %d data0 %d data1 %d",			__func__, ctrl->bNotificationType, ctrl->wIndex,			ctrl->wLength, data[0], data[1]);	}resubmit_int_urb:	usb_anchor_urb(urb, &dev->tx_submitted);	status = usb_submit_urb(urb, GFP_ATOMIC);	if (status) {		dev_err(&udev->dev, "%s: Error re-submitting Int URB %d/n",		__func__, status);		usb_unanchor_urb(urb);	}}
开发者ID:maxwen,项目名称:enrc2b-kernel-BLADE,代码行数:83,


示例3: rtl8192cu_hostap_mgnt_xmit_entry

//.........这里部分代码省略.........	len = skb->len;	tx_hdr = (struct rtw_ieee80211_hdr *)(skb->data);	fc = le16_to_cpu(tx_hdr->frame_ctl);	bmcst = IS_MCAST(tx_hdr->addr1);	if ((fc & RTW_IEEE80211_FCTL_FTYPE) != RTW_IEEE80211_FTYPE_MGMT)		goto _exit;#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)) // http://www.mail-archive.com/[email
C++ usb_unlock_device函数代码示例
C++ usb_to_input_id函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。